1

コードを次のように処理したいと思います。

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 を呼び出す必要がありますか?

4

1 に答える 1

1

glXYZPointer 呼び出しを呼び出す前に、glBindBuffer を呼び出す必要があります。

OpenGL はステート マシンです。glVertexPointer (または他の gl..Pointer) を呼び出すと、現在バインドされているバッファーに頂点ポインターが設定されます。ポインター呼び出し後の glBindBuffer は何もしません (次のポインター呼び出しに影響することを除いて)。

于 2012-02-09T19:21:55.437 に答える