Modellierung Standard-Codesequenz
← GLSL Anwendungsbeispiel | ● | GLSL Syntax →
Wie benutzt man das Framework inklusive Editor für Shader?
Achtung: Das ganze sind nur Code-Vorschläge, diese müssen für eigene Funktionalität verändert werden, und die Variablennamen den eigenen Konventionen angepasst werden.
Transformation eines Vertex
Erinnerung: Die entgültige Transformation eines Vektors geschieht über die Multiplikation an eine Model-View-Projektion-Matrix: $ v' = M_{MVP} \cdot v $
In OpenGL erledigt man das im Vertex-Shader; zusätzlich benötigt man einen Fragment-Shader, der hier alle Pixel rot macht (Beleuchtungsberechnung etc. später):
Global
Includes und Shader am Anfang des Hauptprogramms definieren (genaus so, wörtlich!):
#include <glvertex_qt_shadereditor.h>
const char shader[] =
"#version 120\n"
"uniform mat4 mvp;\n"
"attribute vec4 vertex_position;\n"
"void main()\n"
"{\n"
" gl_Position = mvp * vertex_position;\n"
"}\n"
"---\n"
"#version 120\n"
"void main()\n"
"{\n"
" gl_FragColor = vec4 (1, 0, 0, 1);\n"
"}\n";
(Protected) Feld anlegen für:
- Shader-Programm (
GLuint program;
)
Init-Funktion
Erzeugen der Shader
Aus dem Quelltext selber (wie oben definiert)Ggf. erstellen eines Shader-Editor-Fensters
Display-Funktion
Aktivieren des Shaders für alle Objekte
lglUseProgram (program, false);
Setzen der Projektions- und der ModellView-Matrix
(und implizit der ModelViewProjection)://[...] werden berechnet
// load matrices
lglProjection (proj);
lglModelView (mv);
Zeichnen
← GLSL Anwendungsbeispiel | ● | GLSL Syntax →