Делает ли glBindBuffer недействительными предыдущие вызовы gl * Pointer? - PullRequest
1 голос
/ 09 февраля 2012

Я хотел бы работать с моим кодом следующим образом:

glVertexPointer( 3, GL_FLOAT, sizeof( Vertex ), (GLvoid*)offsetof( Vertex, Position ) );
glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof( Vertex ), (GLvoid*)offsetof( Vertex, Color ) );

for ( /* each buffer */ )
{
    glBindBuffer( GL_VERTEX_ARRAY, buffer );
    glDrawArrays( GL_TRIANGLE_STRIP, 0, buffer_size );
}

Будет ли это работать?

Или мне нужно вызвать gl * Pointer для каждого буфера?

1 Ответ

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

Вы должны вызвать glBindBuffer перед вызовом вызовов glXYZPointer.

OpenGL - это конечный автомат. Когда вы вызываете glVertexPointer (или другой gl..Pointer), он устанавливает указатель вершины в текущий связанный буфер. glBindBuffer после вызова Pointer ничего не будет делать (кроме того, что это повлияет на следующие вызовы указателя).

...