Матриця ідентичності з точки зору матриць проекції та модельного перегляду по суті скидає матрицю до її стану за замовчуванням.
Як ви сподіваєтеся, ви знаєте, glTranslateі glRotateвони завжди відносяться до поточного стану матриці. Так, наприклад, якщо ви телефонуєте glTranslate, ви перекладаєте з поточної "позиції" матриці, а не з початку. Але якщо ви хочете почати спочатку з початкового коду, це коли ви телефонуєте glLoadIdentity(), і тоді ви можете glTranslateз матриці, яка зараз знаходиться біля джерела, або glRotateз матриці, яка зараз орієнтована у напрямку за замовчуванням.
Я думаю, що відповідь Буна про те, що це еквівалент 1, не зовсім коректна. Матриця насправді виглядає приблизно так:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Це матриця ідентичності. Бун правильно, математично, що будь-яка матриця, помножена на цю матрицю (або матриця, яка виглядає так; діагональні, всі інші 0), призведе до оригінальної матриці, але я не вірю, що він пояснив, чому це важливо.
Причина, чому це важливо, полягає в тому, що OpenGL множить усі позиції та обертання через кожну матрицю; тож, коли, наприклад, ви малюєте багатокутник ( glBegin(GL_FACE), деякі точки, glEnd()), він переводить його у "світовий простір", помножуючи його на MODELVIEW, а потім переводить його з 3D на 2D шляхом множення на матрицю PROJECT, і це дає йому 2D точки на екрані, разом з глибиною (від екрану "камера"), яку він використовує для малювання пікселів. Але коли одна з цих матриць є матрицею ідентичності, точки множуються з матрицею ідентичності і тому не змінюються, тому матриця не має ефекту; вона не переводить точки, не обертає їх, залишає їх такими, як є.
Я сподіваюся, що це прояснить трохи більше!