Özdeşlik matrisi, projeksiyon ve modelgörünüm matrisleri açısından, esasen matrisi varsayılan durumuna geri döndürür.
Umarım bildiğiniz gibi glTranslate
ve glRotate
her zaman matrisin şu anki durumuna bağlıdır. Örneğin, ararsanız glTranslate
, matrisin başlangıç noktasından değil, mevcut 'konumundan' çeviri yaparsınız. Ancak, başlangıç noktasından yeniden başlamak istiyorsanız, bu aradığınız zamandır glLoadIdentity()
ve o zaman glTranslate
başlangıçta bulunan matristen veya glRotate
şimdi varsayılan yöne yönlendirilmiş olan matristen yapabilirsiniz.
Bence Boon'un cevabı, 1'e eşdeğerdir, tam olarak doğru değil. Matris aslında şuna benzer:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Bu kimlik matrisidir. Boon, matematiksel olarak, bu matrisle çarpılan herhangi bir matrisin (veya buna benzer bir matris; köşegen olanlar, diğer tüm 0'lar) orijinal matrisle sonuçlanacağı konusunda doğrudur, ancak bunun neden önemli olduğunu açıkladığına inanmıyorum.
Bunun önemli olmasının nedeni, OpenGL'nin her matriste tüm pozisyonları ve rotasyonları çarpmasıdır; örneğin bir çokgen ( glBegin(GL_FACE)
, bazı noktalar glEnd()
) çizdiğinizde , onu MODELVIEW ile çarparak "dünya uzayına" çevirir ve ardından PROJECT matrisiyle çarparak onu 3B'den 2B'ye çevirir ve bu da ona piksel çizmek için kullandığı derinlikle (ekran 'kamerasından') birlikte ekrandaki 2B noktalar. Ancak bu matrislerden biri özdeşlik matrisi olduğunda, noktalar özdeşlik matrisi ile çarpılır ve bu nedenle değişmez, dolayısıyla matrisin etkisi olmaz; noktaları tercüme etmez, döndürmez, olduğu gibi bırakır.
Umarım bu biraz daha açıklığa kavuşur!