Статические вершинные массивы? - PullRequest
0 голосов
/ 09 февраля 2012

Необходимо ли, чтобы вершинные (или цветные и т. Д.) Массивы в OpenGL были статичными?Из Красной книги OpenGL, глава 2 :

static GLint vertices[] = {25, 25,
                      100, 325,
                      175, 25,
                      175, 325,
                      250, 25,
                      325, 325};
static GLfloat colors[] = {1.0, 0.2, 0.2,
                      0.2, 0.2, 1.0,
                      0.8, 1.0, 0.2,
                      0.75, 0.75, 0.75,
                      0.35, 0.35, 0.35,
                      0.5, 0.5, 0.5};

 glEnableClientState (GL_COLOR_ARRAY);
 glEnableClientState (GL_VERTEX_ARRAY);

 glColorPointer (3, GL_FLOAT, 0, colors);
 glVertexPointer (2, GL_INT, 0, vertices);

Ответы [ 2 ]

3 голосов
/ 09 февраля 2012

Они не должны быть статичными, в том смысле, что вы можете их динамически распределять.Однако их нельзя освобождать, пока вы не закончите рендеринг, то есть после вызова glDrawArrays.Альтернативой является использование объектов буфера вершин, которые позволяют загружать эту память в графический процессор.

0 голосов
/ 10 февраля 2012

эти куски памяти (для данных вершин и цветов) должны быть доступны при вызове функции рисования - например, DrawArrays, DrawElements и т. Д. *

glVertexPointer устанавливает только указатель ...но не копирует никакие данные в opengl

, например, вы можете объявить эти массивы внутри функции Render ... или объявить их глобально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...