Die alte OpenGL-Programmierung für feste Pipelines verwendete das Matrix-Stack-Prinzip.Modern OpenGL: Soll ich einen benutzerdefinierten Matrixstack verwenden?
Mit flexiblen Shadern kann ich jetzt meine eigenen Matrizen erstellen und verwenden, wie ich will. Ich habe Tutorials gelesen, die anscheinend keinen Matrix-Stack mehr verwenden, sondern einfach nur die benötigten Matrizen speichern und anwenden.
Andere, wie this one, scheinen eine Matrixstapelbibliothek für alle ihre Matrizen zu verwenden (siehe Beispielcode im verknüpften Kapitel).
Meine Frage ist: Ist das eine rein willkürliche Vorliebe, oder wird die moderne Grafikprogrammierung irgendwie oder anders bevorzugt?
Die Verwendung von Stapeln wird nicht bevorzugt. Im Core-Profil gibt es keine Stacks im Voraus und ich empfehle dringend, das Core-Profil für neue Projekte zu verwenden. Speichern Sie die Modellmatrix mit Ihrem Objekt und übergeben Sie sie zusammen mit Ansichts- und Projektionsmatrizen als Shader. Die Stacks waren dort, so dass hierarchische Aufrufe einfacher durchzuführen waren. – Mars
@Mars Ich benutze das Core-Profil, also werde ich definitiv nicht die OpenGL-Stacks verwenden. Aber einige Tutorials verwenden ihre eigenen Stacks oder std :: stack oder etwas ähnliches, während andere anscheinend keine Stacks verwenden, sondern einfach die Matrizen in geeigneten Klassen/Objekten speichern. Würden Sie empfehlen, keine Stapel für "normale" Zeichnungen zu verwenden und Ihre eigene Stapelimplementierung oder Bibliothek zu verwenden, wenn Sie eine Hierarchie benötigen (z. B. Gelenke usw.)? – jhyot
TL; DR: ja. Aber es hängt meistens davon ab, welchen Ansatz Sie "natürlicher" finden und mit dem Sie sich wohler fühlen. Man könnte so von alter Pipeline beeinflusst sein, kann nicht damit fertig werden, keinen Stapel von Matrizen zu haben und muss daher sein eigenes implementieren. Eine andere Person konnte nichts Wertvolles im Stapel sehen. Ich bin fast der Letzte. Arbeitete mit etwas 2.x OpenGL und wechselte dann zu 3.x. Zuerst habe ich meinen eigenen Stack implementiert, aber später fand ich ihn nicht so gut für allgemeine Zwecke mit programmierbaren Shadern. Ich bin kein professioneller OpenGL Developer, habe nur mit meinem Code in meinem (kurzen) Leben gearbeitet. – Mars