我想像这样处理我的代码:
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 *指针吗?
答案 0 :(得分:1)
在调用glXYZPointer调用之前,必须调用glBindBuffer。
OpenGL是一个状态机。当你调用glVertexPointer(或其他gl..Pointer)时,它会将顶点指针设置为当前绑定的缓冲区。指针调用后的glBindBuffer什么都不做(除了它会影响下一个指针调用)。