(Fixed the link) The extension spec says that a VAO contains all state in tables 6.6, 6.7, and 6.8 of the OpenGL 2.1 spec, minus GL_CLIENT_ACTIVE_TEXTURE. This does include GL_ELEMENT_ARRAY_BUFFER_BINDING.Originally Posted by Dark Photon
Curiously, it also includes GL_ARRAY_BUFFER_BINDING, which the 3.1 spec explicitly excludes from VAOs (see table 6.5). So there is a slight difference between the extension and 3.1 core.
The speculations and doubts could be reduced a lot if people tried to actually read the spec. VAOs are really not complicated at all, and I don't know what you think is weird about simply taking a bunch of context state and putting it into a separate state object. It's been done before with texture objects.Originally Posted by skynet
What makes you think nobody wanted it this way?