Bir OpenGL kodu çalıştırmaya çalışıyordum, bu yüzden sahnemi oluşturamadığım için glClear() öğesinde GL_DEPTH_BUFFER_BIT temizlendi. Bu biti ekledim ve sahne işlendi. Bu açık biti kullanmak neden gereklidir?Açılış sırasında OpenGL'de derinlik arabelleğini temizlemek zorundayız?
Önceden GPU tarafından kullanılan derinlik arabellek değerlerini temizlemek için bunun nedenini biliyorum, ancak yalnızca onaylamak istiyorum.
Ayrıca derinlik aralığını ve derinlik testinin yönünü her bir kareyi de değiştirebilirsiniz. Ancak, derinlik tamponunu temizlemenin aynı zamanda modern donanım üzerinde bir performans optimizasyonu olduğunu ortaya koyuyor - GPU ihtiyaçlarının sadece birkaç bit okumasını/yazmasını sağladığında çerçevebufferi fayansa bölerek kayıpsız Z-Tampon (ve renkli tampon) sıkıştırma uygular Ekranda, içinde hiçbir şey olmayan alanların değerlerini alırken -tile. Bu nedenle, insanların renk tamponunu ve derinlik arabelleğini temizlemekten kaçınmak için kullandıkları eski hack, aslında modern GPU'larda performansı gerçekten incitiyor;) –
Nedeni tam olarak ne düşündüğümdü :) Mükemmel ans. – 2am