I really don't bother much about such minor details
What i do bother about VERY MUCH: OpenGL has become a major pain in the ass regarding vertex attributes and i wonder, whether there is anything in the pipeline to remedy this (though i fear, if at all, it will become worse).
Back in "the days", if i wanted to render something, i set a glVertexPointer, glNormalPointer and glTexCoordPointers. In the shaders i simply used the built in variables (gl_Normal, gl_MultiTexCoord*) and it was mostly fine.
Well, glTexCoordPointer is deprecated, and anyway i have int-attributes and other stuff, such that i prefer to use generic vertex attributes.
The problem with these is, i need to query the CURRENT shader, which bind-point a certain attribute is attached to. That actually means, that every time that i change a shader, i would need to reevaluate where to bind my vertex-arrays to. Some shader might not use one of the available attributes, such that some bind points change.
That means there is for every shader/vertex-buffer combination a certain attribute mapping. Sure, i CAN handle this, i can even make this "fast", using VAOs (though they seem to be buggy yet, and not speed up anything) which i store for every such combination.
But only because it's possible, doesn't mean it's not awkward...
What i would really like to do, is simply to tell the API "here is my shader" and "here is a VBO that consists of the attribute arrays 'position', 'texcoord', 'tangent' and 'whatever'" and have the driver sort out any mappings internally. Just instead of "glGetAttibLocation ('bla') glBindAttibute (location, ..)" (at EACH shader switch) i'd rather say ONCE "glBindAttributeByName ('bla', ..)" and have the driver take care for the rest, until i deactivate the array again.
But i fear i have to implement such an abstraction myself someday.
Jan.





