La matrice d'identité, en termes de matrices de projection et de vue du modèle, réinitialise essentiellement la matrice à son état par défaut.
Comme vous le savez, espérons-le, glTranslate
et glRotate
sont toujours relatifs à l'état actuel de la matrice. Ainsi, par exemple, si vous appelez glTranslate
, vous traduisez à partir de la «position» actuelle de la matrice, et non de l'origine. Mais si vous voulez recommencer à l'origine, c'est à ce moment-là que vous appelez glLoadIdentity()
, puis vous pouvez à glTranslate
partir de la matrice qui se trouve maintenant à l'origine, ou glRotate
de la matrice qui est maintenant orientée dans la direction par défaut.
Je pense que la réponse de Boon, que c'est l'équivalent de 1, n'est pas tout à fait correcte. La matrice ressemble en fait à ceci:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
C'est la matrice d'identité. Boon a raison, mathématiquement, que toute matrice multipliée par cette matrice (ou une matrice qui ressemble à cela; diagonales, tous les autres 0) aboutira à la matrice d'origine, mais je ne crois pas qu'il ait expliqué pourquoi c'est important.
La raison pour laquelle c'est important est que OpenGL multiplie toutes les positions et rotations à travers chaque matrice; donc quand par exemple vous dessinez un polygone ( glBegin(GL_FACE)
, quelques points, glEnd()
), il le traduit en "espace monde" en le multipliant avec le MODELVIEW, puis le traduit de 3D en 2D en le multipliant avec la matrice PROJECT, et cela le donne les points 2D sur l'écran, ainsi que la profondeur (à partir de l'écran «caméra»), qu'il utilise pour dessiner des pixels. Mais lorsque l'une de ces matrices est la matrice d'identité, les points sont multipliés avec la matrice d'identité et ne sont donc pas modifiés, donc la matrice n'a aucun effet; il ne traduit pas les points, il ne les fait pas pivoter, il les laisse tels quels.
J'espère que cela clarifie un peu plus!