我有一個結構稱爲Point
(這恰好是一個Python擴展),看起來像這樣:OpenGL的頂點數組
struct Point {
PyObject_HEAD // Macro that expands to include a few more members
double x;
double y;
};
而且我還有一個結構,將持有這些一堆兩個數組:
struct Polygon {
int length;
Point **vertex_points;
Point **texcrd_points;
}
我想要使用它們來映射具有頂點陣列的多邊形的頂點和紋理座標。問題是,頂點數組期待陣列格式爲:
[x, y, x, y, x, y, etc]
有沒有一種方法,我可以打電話glVertexPointer
和glTexCoordPointer
與Polygon->vertex_points
和Polygon->texcrd_points
,還是我來構建匹配的內容GL *指針期待新的陣列?
問題是,glVertexPointer需要一個平面數組,而不是Points *。我需要一些方法告訴glVertexPointer座標數據在Point-> x和Point-> y中,而不必構建平面數組。 – 2010-07-18 00:35:27
哦,並且多邊形具有Point **而不是Point * s是因爲Point是Python擴展類型。使用擴展類型的首選方式是始終操作它們的指針。 – 2010-07-18 00:37:28
我用C內存管理信息更新了答案,我認爲這是理解上的差距。只有在您對自己的工作感到滿意的情況下才使用「內存多態」。我對Python不太瞭解,所以我會假設你知道你在做什麼。 :) – 2010-07-18 00:46:50