Ich versuche, die OpenGL Shading Language (GLSL) Version 1.5 zu verwenden, um Vertex- und Geometrie-Shader zu erstellen.Wie erhalten Sie die Modelview und Projektionsmatrizen in OpenGL?
Ich habe gelernt, dass in GLSL Version 1.5 die eingebauten Variablen wie gl_ModelViewProjectionMatrix
veraltet sind, so dass Sie sie manuell übergeben müssen. Wenn ich die Modelview- und Projektionsmatrizen bereits eingestellt habe (zum Beispiel mit gluLookAt
und gluPerspective
), wie bekomme ich dann die Matrizen in die Vertex- und Geometrie-Shader? Ich habe einige Suche durchgeführt und einige Websites scheinen eine Funktion glGetMatrix()
zu erwähnen, aber ich kann diese Funktion in keiner offiziellen Dokumentation finden, und es scheint nicht in der Implementierung, die ich verwende, zu existieren (ich bekomme einen Kompilierungsfehler unknown identifier: glGetMatrix
wenn ich versuche, es mit dieser Funktion zu kompilieren).
+1 Das ist ein ausgezeichneter Punkt, den du angesprochen hast! – Stringer
Also mit dem abgeschriebenen Matrix-Stack bin ich nicht sicher, was der neue Ansatz sein sollte. In unserem alten Code haben wir Transformationen auf instanzierte Objekte angewendet und jede von einer gemeinsamen Funktion gerendert. Es scheint also so zu sein, dass ich die ModelView-Matrix nach jeder Transformation manuell aktualisieren müsste. Was ist das neue Paradigma dafür? – Nigel
Wenn Sie einen Matrixstack in GL3 + erstellen möchten, erstellen Sie einen 'std :: vector' und übergeben Sie das oberste Matrixobjekt mit 'glUniformMatrix4fv'. Sie können mehrere davon haben, und Sie können entscheiden, wie Sie jedes in Ihren Shadern verwenden. –
Kos