Die OpenGL-Funktion `glLoadIdentity();` wird verwendet, um die aktuelle Modell-View-Matrix (oder eine andere aktive Matrix) auf die Identitätsmatrix zurückzusetzen.
`glLoadIdentity();` – Die Identitätsmatrix setzen
1. Funktionsweise:
2. Was ist eine Identitätsmatrix?
3. Wann wird `glLoadIdentity();` verwendet?
4. Beispiel: `glLoadIdentity();` in der Praxis
5. Was passiert ohne `glLoadIdentity();`?
6. Zusammenfassung:
1.) Funktionsweise:
- Eine Matrix in OpenGL speichert Transformationen wie Verschiebung (Translation), Drehung (Rotation) und Skalierung.
- Jedes Mal, wenn `glLoadIdentity();` aufgerufen wird, wird die aktuell aktive Matrix auf eine Einheitsmatrix (Identitätsmatrix) zurückgesetzt.
- Dadurch werden alle vorher angewendeten Transformationen gelöscht, sodass eine neutrale Ausgangsbasis entsteht.
2.) Was ist eine Identitätsmatrix?
Die 4×4-Identitätsmatrix, die OpenGL verwendet, sieht so aus:
(Bild-1) Matrix4x4 |
![]() |

- Alle Diagonalelemente sind 1, alle anderen Einträge sind 0.
- Wenn eine Punkt- oder Vektorkoordinate mit dieser Matrix multipliziert wird, bleibt sie unverändert.
3.) Wann wird `glLoadIdentity();` verwendet?
- Vor neuen Transformationen, um sicherzustellen, dass sie nicht durch vorherige beeinflusst werden.
- Nach dem Setzen der Kameraansicht, um eine frische Ausgangsbasis für Modelltransformationen zu erhalten.
4.) Beispiel: `glLoadIdentity();` in der Praxis
void renderScene() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Bildschirm leeren glLoadIdentity(); // Matrix auf Identitätsmatrix setzen // Kamera-Position setzen (Translation nach hinten) glTranslatef(0.0f, 0.0f, -5.0f); // Ein Würfel zeichnen drawCube(); glutSwapBuffers(); // Doppelpuffer wechseln }
5.) Was passiert ohne `glLoadIdentity();`?
Ohne `glLoadIdentity();` würde sich jede neue Transformation auf die vorherige Transformation aufaddieren, was zu unerwarteten Ergebnissen führen kann.
Beispiel:
- Wenn eine Szene in jeder Frame-Wiederholung eine Translation ausführt, würde das Objekt sich immer weiter bewegen, anstatt an einer festen Position zu bleiben.
6.) Zusammenfassung:
✅ `glLoadIdentity();` setzt die aktuelle Matrix auf die Identitätsmatrix zurück.
✅ Es wird häufig nach `glClear()` und vor neuen Transformationen aufgerufen.
✅ Ohne `glLoadIdentity();` können sich Transformationen kumulieren, was ungewollte Effekte erzeugt.
In modernen OpenGL-Versionen wird anstelle von `glLoadIdentity();` oft mit eigenen Matrizen und Shadern gearbeitet.