Esto es principalmente una pregunta de documentación. Espero que este sea el lugar adecuado para preguntar y no, por ejemplo, programadores o stackoverflow.
No leí la especificación OpenGL, pero de los libros (Libro Rojo) y varios tutoriales, no puedo comprender adecuadamente cómo interactúan y se relacionan los diferentes objetos y partes de la API.
Por ejemplo, sé que si un VAO está vinculado, entonces vincular un VBO y establecer un atributo dará como resultado que el VBO esté vinculado al VAO.
Pero hay muchos objetos, su relación puede variar. Por ejemplo, el VAO no tiene ninguna relación con el programa de sombreado actual, pero el resultado de las operaciones de dibujo puede depender de ambos.
Entre todos los diversos componentes OpenGL, puedo ver algunas relaciones como A-binds-to-B o A-and-B-are-used-by-C. Todas estas relaciones coinciden en determinar cómo se puede alterar el estado del contexto, cómo se pueden cambiar las cosas, cómo se pueden guardar las cosas juntas y optimizarlas.
Estoy buscando recursos que expliquen solo estas relaciones. Al igual que un diagrama UML, un gráfico o incluso un documento de texto, que no se centra en las llamadas, sino que describe de forma compacta cómo interactúan y se relacionan entre sí los diversos componentes de OpenGL.
¿Sabes dónde encontrar ese recurso?
glVertexAttribPointer()
. El diagrama para objetos OpenGL sería bastante superficial y simple, en realidad no hay más que un puñado de objetos diferentes en OpenGL. Los VAO usan buffers para los atributos. Las texturas de los búferes están respaldadas por búferes. Los Framebuffers tienen accesorios de textura. Los comandos de dibujo utilizan el VAO actual, el programa actual, el framebuffer actual, la configuración actual del muestreador y el buffer de índice actual / buffer indirecto. Probablemente puedas dibujar el diagrama tú mismo.
;)
(toda la API es un gran desastre de datos globales)