Давайте предположим, что у меня есть массив вершин и указатель VBO:OpenGL: Мне еще нужен массив вершин после буферизации в VBO?
std::vector<Vertex> vertices;
GLuint vbo;
glBindBuffer(GL_ARRAY_BUFFER, vbo);
Теперь буфер данных:
glBufferData(
GL_ARRAY_BUFFER,
vertices.size()*sizeof(Vertex),
&vertices[0],
GL_STATIC_DRAW
);
Если я понимаю правильно, я по-прежнему нужно держать вершин массива из-за GL_STATIC_DRAW
. Однако, если я изменю его на GL_STATIC_COPY
, тогда все данные будут скопированы в память графического процессора, поэтому я могу освободить память, используемую vertices
. Это верно? Если это так, то зачем нам *_DRAW
? Это полезно из-за ограничения памяти GPU? Плюс как работает GL_STATIC_READ
?