Die Identitätsmatrix im Hinblick auf die Projektions- und Modelview-Matrizen setzt die Matrix im Wesentlichen auf ihren Standardzustand zurück. Wie Sie hoffentlich wissen, sind glTranslate
und glRotate
immer relativ zum aktuellen Status der Matrix. Wenn Sie beispielsweise glTranslate
aufrufen, übersetzen Sie aus der aktuellen "Position" der Matrix, nicht aus dem Ursprung. Aber wenn Sie am Ursprung neu beginnen möchten, dann rufen Sie glLoadIdentity()
, und dann können Sie glTranslate
aus der Matrix, die jetzt im Ursprung befindet, oder glRotate
aus 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 ist korrekt, mathematisch, dass jede Matrix, die mit dieser Matrix multipliziert wird (oder eine Matrix, die so aussieht; diagonale, alle anderen 0), zu der ursprünglichen Matrix führt, aber ich glaube nicht, dass er erklärt hat, warum das wichtig ist.
Der Grund, warum dies wichtig ist, ist, weil OpenGL alle Positionen und Rotationen durch jede Matrix multipliziert; Wenn Sie zum Beispiel ein Polygon zeichnen (glBegin(GL_FACE)
, einige Punkte, glEnd()
), wird es durch Multiplizieren mit der MODELVIEW in "world space" übersetzt und dann von 3D in 2D übersetzt, indem es mit der PROJECT-Matrix multipliziert wird gibt ihm die 2D-Punkte auf dem Bildschirm zusammen mit der Tiefe (vom Bildschirm "Kamera"), die zum Zeichnen von Pixeln verwendet wird. Wenn jedoch eine dieser Matrizen die Identitätsmatrix ist, werden die Punkte mit der Identitätsmatrix multipliziert und werden daher nicht verändert, so dass die Matrix keine Wirkung hat; es übersetzt die Punkte nicht, es dreht sie nicht, es lässt sie so wie sie sind.
Ich hoffe, dies verdeutlicht ein bisschen mehr!
klar Beispiel mit mir vergossen :) – hqt
Das bedeutet, OpenGL unterhält einen ‚Master‘ oder ‚Global‘ Matrix, und jede nachfolgende Matrix relativ angelegt, dass ‚Master‘ oder 'Globale' Matrix. Habe ich recht? – anonymous