Questa è principalmente una domanda di documentazione. Spero che questo sia il posto giusto da chiedere e non, ad esempio, programmatori o stackoverflow.
Non ho letto la specifica OpenGL, ma dai libri (Red Book) e vari tutorial, non riesco a capire correttamente come diversi oggetti e parti dell'API interagiscono e si relazionano.
Ad esempio, so che se un VAO è associato, l'associazione di un VBO e l'impostazione di un attributo comporteranno l'associazione del VBO al VAO.
Ma ci sono molti oggetti, la loro relazione può variare. Ad esempio, il VAO non è completamente correlato all'attuale programma di ombreggiatura, ma il risultato delle operazioni di disegno può dipendere da entrambi.
Tra tutti i vari componenti OpenGL, posso vedere alcune relazioni come A-binds-to-B o A-and-B-are-used-by-C. Tutte queste relazioni concorrono a determinare come si può modificare lo stato del contesto, come si possono cambiare le cose, come si possono salvare le cose insieme e ottimizzare.
Sto cercando risorse che spieghino proprio queste relazioni. Come un diagramma UML, un grafico o persino un documento di testo, che non si concentra sulle chiamate, ma descrive in modo compatto come i vari componenti OpenGL interagiscono e si relazionano tra loro.
Sai dove trovare una tale risorsa?
glVertexAttribPointer()
. Il diagramma per gli oggetti OpenGL sarebbe abbastanza semplice e superficiale, in realtà non ci sono più di una manciata di oggetti diversi in OpenGL. I VAO utilizzano i buffer per gli attributi. Le trame buffer sono supportate da buffer. I framebuffer hanno allegati texture. I comandi di disegno utilizzano l'attuale VAO, il programma corrente, il framebuffer corrente, le impostazioni correnti del campionatore e il buffer dell'indice corrente / buffer indiretto. Probabilmente potresti disegnare il diagramma da solo.
;)
(l'intera API è un enorme casino di dati globali)