La matriz de identidad, en términos de las matrices de proyección y vista modelo, restablece esencialmente la matriz a su estado predeterminado.
Como es de esperarse, glTranslate
y glRotate
son siempre relativos al estado actual de la matriz. Entonces, por ejemplo, si llama al glTranslate
, está traduciendo desde la "posición" actual de la matriz, no desde el origen. Pero si desea volver a empezar en el origen, es cuando llama al glLoadIdentity()
, y luego puede 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 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 0) dará como resultado la matriz original, pero no creo que haya explicado por qué esto es importante.
La razón por la que esto es importante es porque OpenGL multiplica todas las posiciones y rotaciones a través de cada matriz; entonces cuando, por ejemplo, dibuja un polígono (glBegin(GL_FACE)
, algunos puntos, glEnd()
), lo traduce como "espacio mundial" multiplicándolo por MODELVIEW, y luego lo traduce de 3D a 2D multiplicándolo con la matriz PROJECT, y eso le da los puntos 2D en la pantalla, junto con la profundidad (desde la pantalla 'cámara'), 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 se modifican, por lo que la matriz no tiene efecto; no traduce los puntos, no los rota, los deja tal como están.
¡Espero que esto aclare un poco más!
Ejemplo claro conmigo :) – hqt
Eso significa, OpenGL mantiene un 'Maestro' o matriz 'global', y, cada matriz subsiguiente se aplica en relación a la 'Maestro' o Matriz 'Global'. ¿Estoy en lo cierto? – anonymous