What is meant with the OpenGL object model?
Related to the last question. OpenGL has grouped state and global state. Grouped state resides inside objects; state that can have multiple instances of a thing. Examples are buffer objects, texture objects, vertex array objects and framebuffer objects. Global state is simply state which is not associated with any object, because it only has one instance. An example of this is the GL_ARRAY_BUFFER_BINDING state which is a binding point for buffer object names used as vertex attributes. glBindBuffer() writes the buffer object name (the integer identifier) to GL_ARRAY_BUFFER_BINDING, and glVertexAttribPointer() reads it and writes the value to GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, which is a state array associated with the currently bound vertex array object. This is something which is done a lot in OpenGL. You write to a global binding point, and another operation reads this binding point, and writes it to a state variable which belongs to an object. This extra indirection means that yo