La matriz de identidad, en términos de las matrices de proyección y vista de modelo, esencialmente restablece la matriz a su estado predeterminado.
Como es de esperar, glTranslate
y glRotate
siempre son relativos al estado actual de la matriz. Entonces, por ejemplo, si llama glTranslate
, está traduciendo desde la 'posición' actual de la matriz, no desde el origen. Pero si desea comenzar de nuevo en el origen, es cuando llama glLoadIdentity()
, y luego puede hacerlo glTranslate
desde la matriz que ahora se encuentra en el origen, o glRotate
desde la matriz que ahora está orientada en la dirección predeterminada.
Creo que la respuesta de Boon, que es el equivalente a 1, no es exactamente correcta. La matriz en realidad se ve así:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Esa es la matriz de identidad. Boon es correcto, matemáticamente, que cualquier matriz multiplicada con esa matriz (o una matriz que se parece a eso; diagonales, todos los demás ceros) dará como resultado la matriz original, pero no creo que haya explicado por qué esto es importante.
La razón por la cual esto es importante es porque OpenGL multiplica todas las posiciones y rotaciones a través de cada matriz; entonces, por ejemplo, cuando dibuja un polígono ( glBegin(GL_FACE)
, algunos puntos, glEnd()
), lo traduce al "espacio mundial" multiplicándolo con MODELVIEW, y luego lo traduce de 3D a 2D multiplicándolo con la matriz PROYECTO, y eso le da los puntos 2D en la pantalla, junto con la profundidad (de la 'cámara' de la pantalla), que utiliza para dibujar píxeles. Pero cuando una de estas matrices es la matriz de identidad, los puntos se multiplican con la matriz de identidad y, por lo tanto, no cambian, por lo que la matriz no tiene efecto; no traduce los puntos, no los gira, los deja como están.
¡Espero que esto se aclare un poco más!