Matriks identitas, dalam hal matriks proyeksi dan modelview, pada dasarnya mengatur ulang matriks kembali ke keadaan standarnya.
Seperti yang Anda harapkan, glTranslate
dan glRotate
selalu relatif terhadap kondisi matriks saat ini. Jadi misalnya, jika Anda menelepon glTranslate
, Anda menerjemahkan dari 'posisi' matriks saat ini, bukan dari asalnya. Tetapi jika Anda ingin memulai dari awal, saat itulah Anda menelepon glLoadIdentity()
, dan kemudian Anda dapat glTranslate
dari matriks yang sekarang terletak di asal, atau glRotate
dari matriks yang sekarang berorientasi ke arah default.
Saya pikir jawaban Boon, bahwa itu setara dengan 1, tidak sepenuhnya benar. Matriks sebenarnya terlihat seperti ini:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Itu adalah matriks identitas. Boon benar, secara matematis, bahwa setiap matriks dikalikan dengan matriks itu (atau matriks yang terlihat seperti itu; yang diagonal, yang lainnya 0s) akan menghasilkan matriks asli, tetapi saya tidak percaya dia menjelaskan mengapa ini penting.
Alasan mengapa ini penting adalah karena OpenGL mengalikan semua posisi dan rotasi melalui setiap matriks; jadi ketika misalnya Anda menggambar poligon ( glBegin(GL_FACE)
, beberapa titik, glEnd()
), ia menerjemahkannya ke "ruang dunia" dengan mengalikannya dengan MODELVIEW, dan kemudian menerjemahkannya dari 3D ke 2D dengan mengalikannya dengan matriks PROJECT, dan itu memberikannya titik-titik 2D di layar, bersama dengan kedalaman (dari layar 'kamera'), yang digunakannya untuk menggambar piksel. Tetapi ketika salah satu dari matriks ini adalah matriks identitas, poin dikalikan dengan matriks identitas dan karena itu tidak diubah, sehingga matriks tidak memiliki efek; itu tidak menerjemahkan poin, tidak memutar mereka, itu membuat mereka apa adanya.
Saya harap ini sedikit lebih jelas!