La matrice d'identité, en termes de matrices de projection et de modèle, réinitialise essentiellement la matrice à son état par défaut.
Comme vous le savez, glTranslate
et glRotate
sont toujours relatifs à l'état actuel de la matrice. 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 que vous appelez glLoadIdentity()
, puis glTranslate
à partir de la matrice qui se trouve à l'origine, ou glRotate
à partir 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 exactement correcte. La matrice ressemble à 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 avec cette matrice (ou une matrice qui ressemble à cela, les diagonales, tous les autres 0) aboutira à la matrice originale, mais je ne crois pas qu'il ait expliqué pourquoi cela est important.
La raison pour laquelle ceci est important est que OpenGL multiplie toutes les positions et rotations à travers chaque matrice; donc quand vous dessinez un polygone (glBegin(GL_FACE)
, quelques points, glEnd()
), il le traduit en "espace du monde" en le multipliant avec MODELVIEW, puis le traduit de 3D en 2D en le multipliant avec la matrice PROJECT, et que lui donne les points 2D à l'écran, ainsi que la profondeur (à partir de l'écran 'caméra'), qu'il utilise pour dessiner des pixels. Mais quand l'une de ces matrices est la matrice d'identité, les points sont multipliés avec la matrice d'identité et par conséquent ne sont pas changés, ainsi la matrice n'a aucun effet; il ne traduit pas les points, il ne les fait pas tourner, il les laisse tels quels.J'espère que cela clarifie un peu plus!
exemple clair avec moi :) – hqt
Cela signifie, OpenGL maintient un « maître » ou matrice « Global » et, chaque matrice suivante est appliquée par rapport à celle « Maître » ou Matrice 'globale'. Ai-je raison? – anonymous