A matriz de identidade, em termos das matrizes de projeção e modelview, redefine essencialmente a matriz de volta ao seu estado padrão.
Como você provavelmente sabe, glTranslate
e glRotate
sempre são relativos ao estado atual da matriz. Por exemplo, se você ligar glTranslate
, estará traduzindo da posição atual da matriz, não da origem. Mas se você deseja começar de novo na origem, é quando você chama glLoadIdentity()
e pode glTranslate
partir da matriz que agora está localizada na origem ou glRotate
da matriz que agora está orientada na direção padrão.
Eu acho que a resposta de Boon, que é o equivalente a 1, não está exatamente correta. A matriz fica assim:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Essa é a matriz de identidade. Boon está correto, matematicamente, que qualquer matriz multiplicada por essa matriz (ou uma matriz que se parece com isso; diagonais, todos os outros 0s) resultará na matriz original, mas não acredito que ele tenha explicado por que isso é importante.
A razão pela qual isso é importante é porque o OpenGL multiplica todas as posições e rotações por cada matriz; portanto, quando, por exemplo, você desenha um polígono ( glBegin(GL_FACE)
, alguns pontos glEnd()
), ele o converte em "espaço do mundo", multiplicando-o com o MODELVIEW, e depois converte-o de 3D para 2D, multiplicando-o pela matriz PROJECT, e isso fornece os pontos 2D na tela, juntamente com a profundidade (na tela 'câmera'), que ela usa para desenhar pixels. Mas quando uma dessas matrizes é a matriz de identidade, os pontos são multiplicados pela matriz de identidade e, portanto, não são alterados; portanto, a matriz não tem efeito; não traduz os pontos, não os gira, os deixa como estão.
Espero que isso esclareça um pouco mais!