Kisaran nilai yang ditulis ke buffer kedalaman adalah apa pun yang Anda inginkan. Biasanya mereka berada dalam kisaran 0-ke-1. Nilai aktual yang ditulis ke dalam buffer kedalaman dihitung selama transformasi viewport, berdasarkan pada nilai Z vertex dalam ruang NDC (setelah perspektif dibagi dengan w dalam ruang klip).
Nilai kedalaman NDC (Z, setelah pembagian perspektif oleh W) diskalakan oleh bagian kedalaman dari transformasi viewport (yang membawa koordinat X dan Y Anda ke ruang koordinat yang akan Anda kaitkan dengan piksel di jendela), dan kemudian diskalakan dengan (2^n-1)
- Itu dimaksudkan untuk dibaca sebagai "dua pangkat n
" - n
adalah ketepatan bit buffer kedalaman. Nilai yang dihasilkan ditulis ke buffer kedalaman.
OpenGL membagi definisi transformasi viewport matriks ke glViewport dan glDepthRange panggilan. glDepthRange adalah apa yang mengontrol faktor skala yang bertanggung jawab untuk menentukan rentang kedalaman yang Anda tanyakan. Anda dapat memanggil glGetFloatv dengan GL_DEPTH_RANGE
pemilih untuk memulihkan kisaran saat ini. Ini akan memungkinkan Anda untuk menggunakan rentang tanpa mengasumsikan 0-1 (meskipun 99,9% dari waktu, dalam praktiknya, tidak ada yang pernah mengubahnya).
Bacaan lebih lanjut, jika Anda ingin wawasan tentang bagaimana merekonstruksi matematika untuk mengikuti nilai Z sepanjang jalan dari ruang mata ke penyangga kedalaman.