ฉันกำลังทำงานกับโหมดแสดงภาพแบบด้านหน้าไปด้านหลังสำหรับเครื่องยนต์ 2D โดยใช้การฉายภาพแบบออโธกราฟฟิค ฉันต้องการใช้บัฟเฟอร์ความลึกเพื่อหลีกเลี่ยงการถอนเงินมากเกินไป ฉันมีบัฟเฟอร์ความลึก 16 บิตกล้องที่ Z = 100 ดูที่ Z = 0, z ใกล้เคียงคือ 1 และ zFar คือ 1,000 แต่ละสไปรต์ที่แสดงผลจะตั้งค่าพิกัด Z ของมันเป็นค่าที่ห่างไกลมากขึ้น อะไรก็ตามที่อยู่ด้านล่าง
อย่างไรก็ตามฉันทราบวิธีการที่ตำแหน่ง Z ลงท้ายด้วยค่าบัฟเฟอร์ Z คือไม่ใช่เชิงเส้น ฉันต้องการใช้ความละเอียดเต็มรูปแบบของบัฟเฟอร์ความลึก 16 บิตนั่นคืออนุญาตให้มีค่าที่ไม่ซ้ำกัน 65536 ชิ้น ดังนั้นสำหรับทุก sprite ที่เรนเดอร์ฉันต้องการเพิ่มตำแหน่ง Z ไปยังตำแหน่งถัดไปเพื่อให้สัมพันธ์กับค่าบัฟเฟอร์ความลึกที่ไม่ซ้ำกันถัดไป
กล่าวอีกนัยหนึ่งฉันต้องการเปลี่ยนดัชนีที่เพิ่มขึ้น (0, 1, 2, 3 ... ) ของสไปรต์ที่ถูกดึงเข้าไปในตำแหน่ง Z ที่เหมาะสมสำหรับแต่ละสไปรต์เพื่อให้มีค่าบัฟเฟอร์ความลึกที่ไม่ซ้ำกัน ฉันไม่แน่ใจเกี่ยวกับคณิตศาสตร์ที่อยู่เบื้องหลังสิ่งนี้ การคำนวณเพื่อทำสิ่งนี้คืออะไร?
หมายเหตุฉันทำงานใน WebGL (โดยทั่วไป OpenGL ES 2) และฉันต้องการสนับสนุนฮาร์ดแวร์ที่หลากหลายดังนั้นในขณะที่ส่วนขยายเช่น gl_FragDepth อาจทำให้สิ่งนี้ง่ายขึ้นฉันไม่สามารถใช้ด้วยเหตุผลด้านความเข้ากันได้