Isso é principalmente uma questão de documentação. Espero que este seja o lugar certo para perguntar e não, por exemplo, programadores ou stackoverflow.
Não li a especificação OpenGL, mas, nos livros (Red Book) e em vários tutoriais, não consigo entender adequadamente como diferentes objetos e partes da API interagem e se relacionam.
Por exemplo, eu sei que se um VAO estiver vinculado, vincular um VBO e definir um atributo resultará no VBO sendo vinculado ao VAO.
Mas há muitos objetos, sua relação pode variar. Por exemplo, o VAO não tem nenhuma relação com o atual programa de sombreamento, mas o resultado das operações de desenho pode depender de ambos.
Entre todos os vários componentes do OpenGL, posso ver algumas relações como A-bind-to-B ou A-and-B-use-by-C. Todas essas relações concordam em determinar como alguém pode alterar o estado do contexto, como pode mudar as coisas, como pode salvar as coisas e otimizar.
Estou procurando recursos explicando apenas essas relações. Como um diagrama UML, um gráfico ou mesmo um documento de texto, que não se concentra nas chamadas, mas descreve de maneira compacta como os vários componentes do OpenGL interagem e se relacionam.
Você sabe onde encontrar esse recurso?
glVertexAttribPointer()
. O diagrama para objetos OpenGL seria bastante superficial e simples; na verdade, não há mais do que um punhado de objetos diferentes no OpenGL. Os VAOs usam buffers para atributos. As texturas de buffer são apoiadas por buffers. Os framebuffers possuem anexos de textura. Os comandos de desenho usam o VAO atual, o programa atual, o buffer de quadros atual, as configurações atuais do amostrador e o buffer de índice atual / buffer indireto. Você provavelmente poderia desenhar o diagrama você mesmo.
;)
(toda a API é uma enorme confusão de dados global)