Dies ist meist eine Dokumentationsfrage. Ich hoffe, dies ist der richtige Ort, um zu fragen, und nicht zum Beispiel Programmierer oder Stackoverflow.
Ich habe die OpenGL-Spezifikation nicht gelesen, kann aber aus Büchern (Red Book) und verschiedenen Tutorials nicht richtig nachvollziehen, wie verschiedene Objekte und Teile der API interagieren und sich beziehen.
Ich weiß zum Beispiel, dass, wenn eine VAO gebunden ist, das Binden eines VBO und das Setzen eines Attributs dazu führt, dass der VBO an die VAO gebunden wird.
Es gibt aber viele Objekte, deren Beziehung variieren kann. Beispielsweise hat der VAO keinerlei Beziehung zum aktuellen Schattierungsprogramm, aber das Ergebnis von Zeichenoperationen kann von beiden abhängig sein.
Unter all den verschiedenen OpenGL-Komponenten sehe ich einige Relationen wie A-Bindungen an B oder A-und-B-werden von C verwendet. All diese Beziehungen bestimmen gemeinsam, wie man den Zustand des Kontexts verändern kann, wie man Dinge verändern kann, wie man Dinge zusammen speichern und optimieren kann.
Ich suche nach Ressourcen, die nur diese Beziehungen erklären . Wie ein UML-Diagramm, ein Graph oder sogar ein Textdokument, das sich nicht auf die Aufrufe konzentriert, sondern auf kompakte Weise beschreibt, wie die verschiedenen OpenGL-Komponenten interagieren und sich aufeinander beziehen.
Wissen Sie, wo Sie eine solche Ressource finden?
quelle
glVertexAttribPointer()
. Das Diagramm für OpenGL-Objekte wäre recht flach und einfach, es gibt tatsächlich nicht mehr als eine Handvoll verschiedener Objekte in OpenGL. VAOs verwenden Puffer für Attribute. Puffertexturen werden durch Puffer gesichert. Framebuffer haben Texturanhänge. Zeichenbefehle verwenden den aktuellen VAO, das aktuelle Programm, den aktuellen Framebuffer, die aktuellen Sampler-Einstellungen und den aktuellen Indexpuffer / indirekten Puffer. Sie könnten das Diagramm wahrscheinlich selbst zeichnen.;)
(die gesamte API ist ein einziges Durcheinander globaler Daten)Antworten:
Also habe ich versucht, mein eigenes Diagramm zu malen. Es ist nicht umfassend, vor allem, weil ich momentan nicht an einigen Dingen interessiert bin, sondern auch, weil ich wollte, dass es lesbar ist (auch wenn es kein formal festgelegtes Diagramm ist, denke ich, dass es leicht lesbar sein sollte).
Da dies für einige Leute von Interesse zu sein scheint, möchte ich es hier teilen, um Feedback zu erhalten und es überprüfen zu lassen. Ich habe das OpenGL-Wiki als Referenz verwendet, um die Richtigkeit zu überprüfen, aber möglicherweise habe ich Fehler eingeführt.
Wenn Ihnen die zur Verfügung gestellten Informationen nicht ausreichen oder ich wichtige Zusammenhänge ausgelassen habe, die es wert sind, in das Diagramm aufgenommen zu werden, können Sie sie gerne vorschlagen, und ich werde versuchen, sie auf dem neuesten Stand zu halten.
Auch hier können Sie Fehler, Probleme oder Vorschläge melden. Wir heißen Sie herzlich willkommen.
BEARBEITEN
quelle