This is mostly a documentation question. I hope this is the proper place to ask and not, for example, programmers or stackoverflow.
I did not read the OpenGL specification, but from books (Red Book) and various tutorial, I cannot properly grasp how different objects and parts of the API interact and relate.
For example, I know that if a VAO is bound, then binding a VBO and setting an attribute will result in the VBO being bound to the VAO.
But there are many objects, their relation may vary. For example, the VAO is completely unrelated to the current shading program, but the outcome of drawing operations may depend on both of them.
Among all the various OpenGL components, I can see some relations like A-binds-to-B or A-and-B-are-used-by-C. All these relations concur in determining how one can alter the state of the context, how can change things, how can save things together and optimize.
I am looking for resources explaining just these relations. Like an UML diagram, a graph, or even a text document, which does not focus about the calls, but describes in a compact way how the various OpenGL components interact and relate one to each other.
Do you know where to find such a resource?
glVertexAttribPointer()
. The diagram for OpenGL objects would be fairly shallow and simple, there aren't actually more than a handful of different objects in OpenGL. VAOs use buffers for attributes. Buffer textures are backed by buffers. Framebuffers have texture attachments. Drawing commands use the current VAO, current program, current framebuffer, current sampler settings, and current index buffer / indirect buffer. You could probably draw the diagram yourself. \$\endgroup\$;)
(the whole API is one huge mess of global data) \$\endgroup\$