Computergrafik
Matrix Berechnen Und Setzen Standard-Codesequenz
← MatrizenBeispiele | ● | Hierarchische Modellierung →
Annahme: die Framework-Funktionen werden verwendet, es gibt eine Initialisierungs-Funktion, und eine Display-Funktion, die fĂĽr jeden Frame aufgerufen wird.
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.
Init-Funktion
Können auch jederzeit während der Zeichenroutine verändert werden, aber meist reicht die Initialisierung einmal am Anfang.
- Objekte (Cube, Tet, Pyramid, Sphere, Cylinder, Disc, Cone, Ring, CoordSys) erstellen bzw. eines laden
lglCube cube; // Feld in der Klasse
- Löschfarbe für
glClear()
glClearColor (0.0, 0.0, 0.0, 0.0);
- Tiefen-Test (z-Buffer) einschalten
glEnable (GL_DEPTH_TEST);
Display-Funktion
1) Bildschirm löschen
- Ohne z-Buffers
GL_DEPTH_BUFFER_BIT
entfernen:
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
2) P und MV berechnen
mat4 proj, mv;
proj = mat4::perspective ( ... );
mv = mat4::lookat ( ... );
mv = mv * mat4::translate (...);
...
proj = mat4::perspective ( ... );
mv = mat4::lookat ( ... );
mv = mv * mat4::translate (...);
...
3) P und MV setzen und Zeichenbefehle schicken:
lglProjection (proj);
lglModelView (mv);
lglRender (cube);
lglModelView (mv);
lglRender (cube);
Alternative zum letzten Schritt: Objekt von Hand zeichnen:
lglBegin (LGL_TRIANGLES);
lglVertex (...);
...
lglEnd();
lglVertex (...);
...
lglEnd();