Harika bir OpenGL öğretici okuyorum . Gerçekten harika, güven bana. Şu anda bulunduğum konu Z-buffer. Tüm bunların ne olduğunu açıklamanın yanı sıra yazar, GL_LESS, GL_ALWAYS vb. Gibi özel derinlik testleri yapabileceğimizden bahsediyor. Ayrıca derinlik değerlerinin (üstte olan ve olmayan) gerçek anlamının da olabileceğini açıklıyor. özelleştirilmiş. Şimdiye kadar anlıyorum. Ve sonra yazar inanılmaz bir şey söylüyor:
ZNear aralığı zFar aralığından daha büyük olabilir; öyleyse, pencere alanı değerleri, görüntüleyiciye en yakın veya en uzak olanı tersine çevirir.
Daha önce, 0 pencere boşluğu Z değerinin en yakın ve 1'in en uzak olduğu söylendi. Ancak, klip-boşluk Z değerlerimiz reddedilirse, 1 derinliği görünüme en yakın ve 0 derinliği en uzak olur. Yine de, derinlik testinin yönünü (GL_LESS - GL_GREATER, vb.) Çevirirsek, aynı sonucu alırız. Bu gerçekten sadece bir kongre. Aslında, Z işaretini ve derinlik testini tersine çevirmek bir zamanlar birçok oyun için hayati bir performans optimizasyonuydu.
Doğru anlıyorsam, performans açısından, Z işaretini ve derinlik testini ters çevirmek, <
karşılaştırmayı karşılaştırmaktan başka bir şey değildir >
. Yani, eğer doğru anlamak ve yazar sonra değişen, yalan veya uyduruyor değilse <
etmek >
olmaya kullanılan hayati optimizasyon birçok oyunlar için.
Yazar, uyduruyor şey yanlış anlama ediyorum, yoksa bir zamanlar durum gerçekten de <
(yavaştı hayati daha yazarının da belirttiği üzere) >
?
Bu oldukça ilginç meseleyi açıkladığınız için teşekkürler!
Feragatname: Algoritma karmaşıklığının optimizasyonlar için birincil kaynak olduğunun tamamen farkındayım. Dahası, bugünlerde bunun kesinlikle bir fark yaratmayacağından şüpheleniyorum ve bundan herhangi bir şeyi optimize etmesini istemiyorum. Sadece aşırı derecede acı verici, belki de merakla merak ediyorum.