Die Identitätsmatrix setzt die Matrix in Bezug auf die Projektions- und Modellansichtsmatrizen im Wesentlichen auf ihren Standardzustand zurück.
Wie Sie hoffentlich wissen glTranslate
und glRotate
immer relativ zum aktuellen Status der Matrix sind. Wenn Sie beispielsweise anrufen glTranslate
, übersetzen Sie von der aktuellen 'Position' der Matrix, nicht vom Ursprung. Wenn Sie jedoch am Ursprung neu beginnen möchten, rufen Sie an glLoadIdentity()
und können dann glTranslate
von der Matrix aus, die sich jetzt am Ursprung befindet, oder glRotate
von der Matrix, die jetzt in der Standardrichtung ausgerichtet ist.
Ich denke, Boons Antwort, dass es das Äquivalent von 1 ist, ist nicht genau richtig. Die Matrix sieht tatsächlich so aus:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Das ist die Identitätsmatrix. Boon hat mathematisch gesehen Recht, dass jede mit dieser Matrix multiplizierte Matrix (oder eine Matrix, die so aussieht; diagonale, alle anderen Nullen) zur ursprünglichen Matrix führt, aber ich glaube nicht, dass er erklärt hat, warum dies wichtig ist.
Der Grund, warum dies wichtig ist, liegt darin, dass OpenGL alle Positionen und Rotationen durch jede Matrix multipliziert. Wenn Sie beispielsweise ein Polygon ( glBegin(GL_FACE)
, einige Punkte glEnd()
) zeichnen , übersetzt es es in den "Weltraum", indem es mit der MODELVIEW multipliziert wird, und übersetzt es dann von 3D in 2D, indem es mit der PROJECT-Matrix multipliziert wird Die 2D-Punkte auf dem Bildschirm sowie die Tiefe (von der Bildschirmkamera), mit der Pixel gezeichnet werden. Wenn jedoch eine dieser Matrizen die Identitätsmatrix ist, werden die Punkte mit der Identitätsmatrix multipliziert und daher nicht geändert, sodass die Matrix keine Auswirkung hat. es übersetzt die Punkte nicht, es dreht sie nicht, es lässt sie wie sie sind.
Ich hoffe das klärt ein bisschen mehr!