Derinlik arabelleğine yazılan değerlerin aralığı, olmasını istediğiniz her şeydir. Tipik olarak 0 ila 1 aralığındadırlar. Derinlik arabelleğine yazılan gerçek değer, görünüm alanı dönüşümü sırasında, NDC uzayındaki tepe noktasının Z değerine göre (perspektif, klip uzayında w'ye bölündükten sonra) hesaplanır.
NDC derinlik değeri (Z, perspektif bölü W ile bölündükten sonra) görünüm alanı dönüşümünün derinlik bölümüne göre ölçeklendirilir (X ve Y koordinatlarınızı penceredeki piksellerle ilişkilendireceğiniz bir koordinat alanına getirir) ve ardından ölçeklendirilir (2^n-1)
- bu, "gücünün ikisine" olarak okunması gerektiği anlamına gelir n
- n
derinlik tamponunun bit hassasiyeti. Ortaya çıkan değer derinlik arabelleğine yazılır.
OpenGL, görünüm alanı dönüştürme matrisinin tanımını glViewport ve glDepthRange çağrılarına böler . glDepthRange, sormak istediğiniz derinlik aralığını belirlemekten sorumlu ölçek faktörünü kontrol eden şeydir. Sen diyebilirsin glGetFloatv ile GL_DEPTH_RANGE
şimdiki aralığını kurtarmak için selektör. Bu, aralığı 0 ila 1 olduğunu varsaymadan kullanmanıza izin verecektir (zamanın% 99,9'u pratikte hiç kimse değiştirmez).
Göz boşluğundan derinlik arabelleğine kadar Z değerini takip etmek için matematiğin nasıl yeniden yapılandırılacağına dair bir fikir edinmek isterseniz daha fazla okuma.