I’ve wondered for a while why this “state” even exists. Is there any reason not to enable this state forever and never disable it?
Thanks!
I’ve wondered for a while why this “state” even exists. Is there any reason not to enable this state forever and never disable it?
Thanks!
Probably for consistency.
Ok, so the GL_VERTEX_ARRAY client state is nonsense, given that it won’t even apply unless I am calling glDrawArrays or glDrawElements, etc., and you MUST have vertices for the call to even make sense. The other client states are useful like GL_NORMAL_ARRAY, GL_COLOR_ARRAY, etc., correct?
My understanding then is, it’s fine to just enable GL_VERTEX_ARRAY in your one-time context initialization and from then on just omit all the glEnableClientState(GL_VERTEX_ARRAY)/glDisableClientState(GL_VERTEX_ARRAY) calls that you would have made, correct?
I am in the process of converting all my vertex array stuff to use GL_ARB_vertex_array_object. If I use that, can I forget about all the legacy vertex array client state stuff? In other words, if I have a bound vertex array object, and I do glInterleavedArrays or gl*Pointer calls, it will do the right thing in the vertex array object context without having to worry about gl(En/Dis)ableClientState?
Thanks!
Ok, so the GL_VERTEX_ARRAY client state is nonsense, given that it won’t even apply unless I am calling glDrawArrays or glDrawElements, etc.
That’s not true. You can always use glArrayElement
in immediate mode, between glBegin/glEnd
calls.
I mean, not that anyone ever should. But thanks to this function, it is certainly possible to pull some attributes from glArrayElement and still use glVertex
to provide the positions.
I am in the process of converting all my vertex array stuff to use GL_ARB_vertex_array_object. If I use that, can I forget about all the legacy vertex array client state stuff?
No. Not unless you’re also using glVertexAttribPointer exclusively. No glVertex/Color/Normal/etcPointer calls. And even then, you still have glEnable/DisableVertexAttribPointer to deal with.
Ah ok, that answers my question. Thanks so much for the responses!