กาลครั้งหนึ่งการล้างสีและบัฟเฟอร์เชิงลึกต้องใช้เวลา การทำสิ่งที่ชัดเจนหมายความว่าการ์ดกราฟิกจะต้องเดินทุกพิกเซลของเฟรมเฟรมและเขียนค่าลงไป
ด้วยเหตุนี้ผู้พัฒนาเกมพบว่ามันจะมีประสิทธิภาพมากกว่าเพียงแค่สมมติว่าทุกพิกเซลจะแสดงผลอีกครั้ง พวกเขาพัฒนาเทคนิคมากมายสำหรับการทำเช่นนี้
บัฟเฟอร์สีเป็นวิธีที่ง่ายที่สุดในการเพิกเฉย ง่ายน้อยคือบัฟเฟอร์ความลึกเพราะมันจะถูกปนเปื้อนด้วยข้อมูลเก่า ดังนั้นสิ่งที่พวกเขาทำก็เรียบง่าย
ในเฟรม 0 พวกเขาจะแสดงด้วยglDepthRange
(หรือเทียบเท่า D3D) ของ (0, 0.5) และพวกเขาจะใช้หนึ่งglDepthFunc
ของGL_LESS
(หรือGL_LEQUAL
) ซึ่งหมายความว่าค่าความลึกที่ไกลที่สุดที่คุณเคยได้รับในบัฟเฟอร์ความลึกคือ 0.5 ดังนั้นค่าที่ใหญ่ที่สุดในบัฟเฟอร์ความลึกที่ส่วนท้ายของเฟรม 0 คือ 0.5 (สมมติว่าคุณเขียนทุกพิกเซล)
ในเฟรมที่ 1 พวกเขาจะเปลี่ยนช่วงความลึกเป็น (1, 0.5) โปรดสังเกตว่าในกรณีนี้ค่าความลึกใกล้จะใหญ่กว่าความลึกสุด แต่พวกเขาจะเปลี่ยนความลึกของ func เป็นGL_GREATER
(หรือGL_GEQUAL
) ซึ่งจะย้อนกลับความหมายของการทดสอบความลึก เพราะค่าที่มากที่สุดในบัฟเฟอร์ลึก 0.5, ทุกสิ่งที่คุณเขียนจะมีค่าที่มีขนาดใหญ่กว่านี้ เนื่องจากการทดสอบความลึกถูกย้อนกลับสิ่งนี้ได้ผลอย่างมีประสิทธิภาพหมายความว่าสิ่งที่เขียนบนเฟรม 0 นั้นไกลกว่าสิ่งใดที่สามารถเขียนบนเฟรม 1 ได้ในตอนท้ายของเฟรม 1 ค่าที่เล็กที่สุดในบัฟเฟอร์ความลึกคือ 0.5
แล้วพวกเขาก็ทำซ้ำ
สำหรับฮาร์ดแวร์ใด ๆ ที่ทำมาตั้งแต่ประมาณปี 2003 นี่ไม่ใช่การเพิ่มประสิทธิภาพอีกต่อไป แท้จริงมันคือการเพิ่มประสิทธิภาพเชิงลบ ล้างลึกบัฟเฟอร์จริงทำให้ฮาร์ดแวร์ได้เร็วขึ้น ไม่มีจริงๆ.
โดยทั่วไปสิ่งที่เกิดขึ้นคือการลบบัฟเฟอร์ไม่ได้เขียนอะไรเลย พวกเขาเก็บบิตบางส่วนไว้ในแคชของ GPU ที่ให้ระบบทราบว่าสี / ความลึกที่พวกเขาได้รับการล้าง เมื่อระบบพยายามที่จะเขียนลงในแคชแถวของ framebuffer มันไม่ต้องสนใจที่จะอ่านว่ามีอะไรเพราะมันรู้แล้วว่ามันเป็นช่องว่างของค่าสี / ความลึกที่ชัดเจน หากคุณพยายามที่จะผสมผสานกับสิ่งที่มีหรือทำการทดสอบเชิงลึกอีกครั้งไม่จำเป็นต้องอ่าน: มันรู้ว่าสิ่งที่มีคุณค่าในการผสมผสาน / ทดสอบกับ / กับ
ดังนั้นทุกครั้งแรกอ่าน / แก้ไข / เขียนที่คุณทำในแต่ละบรรทัดแคชหลังจากที่ชัดเจนก็คือการเขียน มันเป็นฟรี
นอกจากนี้การมีบัฟเฟอร์ความลึกแบบขรุขระสามารถทำงานกับ Hyper-Z / Hierarchial-Z / การปรับแต่ง Z-culling ใด ๆ ในฮาร์ดแวร์ ใช่ฉากของคุณจะทำงานกับฉากเหล่านั้นในที่สุดเมื่อคุณเพิ่มรายละเอียด แต่ถ้าบัฟเฟอร์ความลึกของคุณขรุขระจากการเรนเดอร์ก่อนหน้าแม้ว่าวัตถุพื้นหลังเหล่านั้นจะอยู่ในพื้นหลังก็อาจส่งผลกระทบต่อประสิทธิภาพของเทคนิค Z-culling และนั่นจะไม่ช่วยในเรื่องประสิทธิภาพ
ดังนั้นคุณไม่ควรทำเทคนิคการย้อนกลับความลึกนี้ในเกมสมัยใหม่
หมายเหตุ: Jari สร้างจุดที่ดีในสถาปัตยกรรมการแสดงผลแบบเรียงต่อกัน (ตามที่พบในแพลตฟอร์มมือถือส่วนใหญ่) การไม่ล้างความลึกอาจทำให้สิ่งที่ไม่พึงประสงค์ในที่นั่นเกินไป