Могу ли я удалить массивы вершин OpenGL после вызова glDrawArrays? - PullRequest
3 голосов
/ 06 февраля 2010

Я генерирую массивы вершин на лету при каждом рендере, и хочу впоследствии удалить массивы. glDrawArrays немедленно копирует массивы вершин на сервер? Следовательно, безопасно ли удалять массивы вершин после вызова glDrawArrays?

float * vp = GetVertices(); // Regenerated on each render
glVertexPointer(3, GL_FLOAT, 3 * sizeof(float), vp);
glDrawArrays(GL_TRIANGLES, 0, nVertices);
delete[] vp; // Can I do this?

В противном случае, как определить, когда безопасно удалять массивы вершин?

Ответы [ 2 ]

8 голосов
/ 06 февраля 2010

Да, он сразу же копируется, поэтому после выполнения вызова вы можете делать все что угодно с массивом.

Кроме того, как уже указывалось, вам нужно использовать delete[] vp для удаления массива.

2 голосов
/ 05 января 2012

Да, вы можете удалить массив вершин после вызова glDrawArrays. Но opengl не будет хранить данные вершин в своей памяти. Он просто использует массив вершин и рисует в буфере кадров. Поэтому в следующий раз, если вы хотите нарисовать ту же самую вершину, вам придется снова предоставить массив вершин glDrawArrays.

...