Some time ago, I read of a paper released by NV on VBO.
The main concern was about not calling glVertexPointer or similar for performance reasons.
I don’t immediatly recognized what this meant. Effectively, I took the optimization in consideration only yesterday since I have some free time and I wanted to check out how my geometry management subsystem works.
I think I badly misunderstood what the whitepaper says. There are some cases in which I simply must call VertexPointer.
By the way, what is being said in the paper looks different from what’s being stated in the VBO specification.
Take the VBO examples. VertexPointer is called in the render loop and this is pretty necessary since the pointer needs to copy the actual buffer binding. If ARB made those examples, I don’t think they are far from optimal.
By the way, what the ext spec is saying does not sound like that
2.8A.1 Vertex Arrays in Buffer Objects
Blocks of vertex array data may be stored in buffer objects with the same format and layout options supported for client-side vertex arrays. However, it is expected that GL implementations will (at minimum) be optimized for data with all components represented as floats, as well as for color data with components represented as either floats or unsigned bytes.
A buffer object binding point is added to the client state associated with each vertex array type. The client does not directly specify the bindings to with these new binding points. Instead, the commands that specify the locations and organizations of vertex arrays copy the buffer object name that is bound to ARRAY_BUFFER_ARB to the binding point corresponding to the vertex array of the type being specified. For example, the NormalPointer command copies the value of ARRAY_BUFFER_BINDING_ARB (the queriable name of the buffer binding corresponding to the target ARRAY_BUFFER_ARB) to the client state variable NORMAL_ARRAY_BUFFER_BINDING_ARB.
If EXT_vertex_shader is defined, then the command VariantArrayEXT(uint id, …) copies the value of ARRAY_BUFFER_BINDING_ARB to the buffer object binding point corresponding to variant array <id>.
If ARB_vertex_program is defined, then the command VertexAttribPointerARB(int attrib, …) copies the value of ARRAY_BUFFER_BINDING_ARB to the buffer object binding point corresponding to vertex attrib array <attrib>.
Can someone give a suggestion on how to read that paper?
I can explain it in more detail if needed.
[This message has been edited by Obli (edited 11-27-2003).]