(XCodeで新しい「OpenGLゲーム」を作成するときに)取得するストックOpenGL ESアプリには、setupGL
関数に次のものがあります。
glEnable(GL_DEPTH_TEST);
//glGenVertexArraysOES( 1, &_vertexArray ) ; // va's are not being used!
//glBindVertexArrayOES( _vertexArray ) ; // we comment these out
// to no ill effect -- are these calls extraneous?
glGenBuffers( 1, &_vertexBuffer ) ;
glBindBuffer( GL_ARRAY_BUFFER, _vertexBuffer ) ;
glBufferData( GL_ARRAY_BUFFER, sizeof(gCubeVertexData), gCubeVertexData, GL_STATIC_DRAW ) ;
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 24, BUFFER_OFFSET(0));
glEnableVertexAttribArray(GLKVertexAttribNormal);
glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, 24, BUFFER_OFFSET(12));
//glBindVertexArrayOES(0);
ただし、頂点配列が使用されているようには見えません (私が知る限り、頂点バッファーが OpenGL サーバー メモリにパークされている間、頂点配列はクライアント メモリにとどまります)。
コマンドをコメントアウトするglBindVertexArrayOES
と、コードはまったく同じように動作するように見えます。
glBindVertexArrayOES
この xCode サンプルの呼び出しは無関係ですか?