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?
fuente
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)Respuestas:
Entonces, intenté pintar mi propio diagrama. No es exhaustivo, principalmente porque no estoy interesado en algunas cosas en este momento, sino también porque quería que fuera legible (incluso si no es un gráfico formalmente especificado, creo que debería ser fácilmente legible).
Además, dado que parece ser de interés para algunas personas, quiero compartirlo aquí para obtener comentarios y hacer que lo revisen. Utilicé el wiki de OpenGL como referencia para verificar la corrección, pero es posible que haya introducido errores.
Además, si la información provista no es suficiente para usted, o si dejé de lado las relaciones importantes que vale la pena incluir en el diagrama, no dude en sugerirlo e intentaré mantenerlo actualizado.
Una vez más, no dude en informar errores, problemas o sugerencias, son bienvenidos.
EDITAR
fuente