Dans l'application stock OpenGL ES sur iOS 5.1, utilisent-ils vraiment les arrays de vertex qu'ils déclarent?

Dans l'application stock OpenGL ES vous obtenez (lorsque vous créez un nouveau "jeu OpenGL" dans XCode), dans la fonction setupGL , il y a:

 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 ) ; glEnableVertexAtsortingbArray(GLKVertexAtsortingbPosition); glVertexAtsortingbPointer(GLKVertexAtsortingbPosition, 3, GL_FLOAT, GL_FALSE, 24, BUFFER_OFFSET(0)); glEnableVertexAtsortingbArray(GLKVertexAtsortingbNormal); glVertexAtsortingbPointer(GLKVertexAtsortingbNormal, 3, GL_FLOAT, GL_FALSE, 24, BUFFER_OFFSET(12)); //glBindVertexArrayOES(0); 

Cependant, il ne semble pas que les arrays de vertex soient utilisés (pour autant que je sache, les arrays de vertex restnt dans la memory du client tandis que les vertex buffers sont stockés dans la memory du server OpenGL).

Si vous commentez les commands glBindVertexArrayOES , le code semble fonctionner exactement de la même manière.

Les appels glBindVertexArrayOES sont- glBindVertexArrayOES étrangers à cet exemple xCode?

Vous confondez les arrays de vertex avec Vertex Array Objects (la terminologie prête à confusion).

Cette déclaration: "(pour autant que je sache, les vertex arrays restnt dans la memory du client alors que les vertex buffers sont parqués sur la memory du server OpenGL)" s'applique aux arrays de vertex côté client. Ils sont utilisés à la place de "Vertex Buffer Objects" lorsque vous souhaitez conserver vos buffers de vertex locaux et fournir ainsi un pointeur de memory brute à glDrawElements / gl * Pointer.

Vertex Array Objects d'autre part sont une construction OpenGL qui contient tous les pointeurs nécessaires pour dessiner un object. Toute fonction OpenGL avec "VertexArray" dans le nom s'applique à "Vertex Array Objects", et non à des arrays de vertex côté client.

Vous pouvez en lire plus sur VAO ici:

http://www.opengl.org/wiki/Vertex_Specification#Vertex_Array_Object