У меня есть структура называется Point
(что случается, расширение Python), который выглядит следующим образом:OpenGL Vertex Массивы
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 ожидает плоский массив чисел, а не точек *. Мне нужно каким-то образом сказать glVertexPointer, что данные координат находятся в Point-> x и Point-> y, не создавая плоский массив. –
О, а в Polygon есть Point ** s вместо Point * s, потому что Point - это тип расширения Python. Предпочтительный способ работы с типами расширений - всегда манипулировать указателями. –
Я обновил ответ с информацией управления памятью C, которая, по моему мнению, является понимающим недостатком. Используйте «полиморфизм памяти», только если вам комфортно с тем, что вы делаете. И я мало знаю о Python, поэтому я предполагаю, что вы знаете, что вы там делаете. :) –