I was reading through the opengl 2.0 white papers and I found very weird that when you create a VertexArrayObject you need to specify the type(GL_VERTEX_ARRAY, GL_NORMAL_ARRAY, etc…).
In my mind, data storage should be independant of the usage, because then you can create dynamic buffers, so the type of data stored in it might change over time.
You cannot do that with the current Opengl2.0 vertex array object. You are stuck with your type.
Also it has a different interface than normal opengl2.0 and opengl1.x vertex array or ATi’s object buffer extension.
//Opengl1.x vertex
glVertexPointer( …, vertices );
//Opengl2.0 vertex array
glVertexArrayPointer( GL_VERTEX_ARRAY, 3, GL_FLOAT, 0 , 32, vertices );
//Array object
handle = CreateArrayObject(GL_VERTEX_ARRAY, …);
glLoadVertexArrayData( handle, 0 , vertices )
//usage
glUseVertexArrayObject( handle );//ati vertex arry
handle = glNewObjectBufferATI( 32, vertices, GL_DYNAMIC );
glArrayObjectATI(GL_VERTEX_ARRAY, …, handle, …)
The opengl2.0 vertex array object interfaces looks very similar to ATi’s objectBuffer, but in the ATi method, you pass the type at usage time.
Why the discrepency in the interfaces???
Anybody has comments on that? I wanted to email this concern to 3d Labs, but you need to sign and fax an agreement form and before doing that I wanted to get opinions of other people(an maybe 3dlabs people will read it too).
[This message has been edited by Gorg (edited 02-06-2002).]