ช่วงของค่าที่เขียนไปยังบัฟเฟอร์ความลึกเป็นสิ่งที่คุณต้องการให้เป็น โดยทั่วไปแล้วจะอยู่ในช่วง 0 ถึง 1 ค่าจริงที่เขียนลงในบัฟเฟอร์ความลึกจะถูกคำนวณในระหว่างการแปลงวิวพอร์ตตามค่า Z ของจุดยอดในพื้นที่ NDC (หลังจากเปอร์สเปคทีฟหารด้วย w ในพื้นที่คลิป)
ค่าความลึก NDC (Z หลังจากมุมมองหารด้วย W) จะถูกปรับสัดส่วนตามส่วนความลึกของการแปลงวิวพอร์ต (ซึ่งนำพิกัด X และ Y ของคุณไปสู่พื้นที่พิกัดที่คุณเชื่อมโยงกับพิกเซลในหน้าต่าง) จากนั้นปรับขนาดด้วย(2^n-1)
- นั่นหมายถึงการอ่านว่า "two to power of n
" - n
เป็นบิตความแม่นยำของบัฟเฟอร์ความลึก ค่าผลลัพธ์ถูกเขียนลงในบัฟเฟอร์ความลึก
OpenGL แยกความหมายของการเปลี่ยนแปลงเมทริกซ์วิวพอร์ตเข้าglViewportและglDepthRangeโทร glDepthRange เป็นสิ่งที่ควบคุมปัจจัยระดับความรับผิดชอบในการกำหนดช่วงความลึกที่คุณถาม คุณสามารถเรียกglGetFloatvพร้อมGL_DEPTH_RANGE
ตัวเลือกเพื่อกู้คืนช่วงปัจจุบัน สิ่งนี้จะช่วยให้คุณสามารถใช้ช่วงโดยไม่ต้องสมมติว่าเป็น 0 ถึง 1 (ถึง 99.9% ของเวลาในทางปฏิบัติไม่มีใครเปลี่ยนแปลงเลย)
อ่านเพิ่มเติมหากคุณต้องการความเข้าใจในการสร้างคณิตศาสตร์ใหม่เพื่อติดตามค่า Z ไปตลอดตั้งแต่พื้นที่ตาไปจนถึงบัฟเฟอร์ความลึก