I am updating my OpenGL classes and I am currently working on the wrapper for the vertex array object. I am trying to use only direct state access functions. Since one can mess up the connection between buffer object and vertex attribute by chosing different binding points I added an assertion which checks if the expected buffer is bound to an attribute. I used
glGetVertexArrayIndexediv(mHandle, attributeIndex, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, &bufferHandle);
to get the handle of the buffer that shares the same binding point with the attribute. When I checked the documentation of glGetVertexArrayIndexediv they dont’t mention GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING. It is only available in the non-DSA version of this function (glGetVertexAttrib). However, the code does exactly what I expected it to do. Now there is the question, is GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING just missing in the documentation or is it really not available for glGetVertexArrayIndexediv? In the latter case my code is probably not portable and I have to use the non DSA version to fix it — would not be to bad, because it is only used for debugging, but still a little bit annoying since I have to save and restore the original binding every time.