Ich lese gerade ein großartiges OpenGL-Tutorial . Es ist wirklich toll, vertrau mir. Das Thema, an dem ich gerade bin, ist Z-Puffer. Neben der Erklärung, worum es geht, erwähnt der Autor, dass wir benutzerdefinierte Tiefentests wie GL_LESS, GL_ALWAYS usw. durchführen können. Er erklärt auch, dass die tatsächliche Bedeutung von Tiefenwerten (die oben sind und welche nicht) auch sein kann angepasst. Ich verstehe soweit. Und dann sagt der Autor etwas Unglaubliches:
Der Bereich zNear kann größer sein als der Bereich zFar; Wenn dies der Fall ist, werden die Fensterraumwerte in Bezug auf das, was dem Betrachter am nächsten oder am weitesten entfernt ist, umgekehrt.
Früher wurde gesagt, dass der Fensterraum-Z-Wert von 0 am nächsten und 1 am weitesten ist. Wenn jedoch unsere Clip-Space-Z-Werte negiert würden, wäre die Tiefe von 1 der Ansicht am nächsten und die Tiefe von 0 am weitesten. Wenn wir jedoch die Richtung des Tiefentests umkehren (GL_LESS zu GL_GREATER usw.), erhalten wir genau das gleiche Ergebnis. Es ist also wirklich nur eine Konvention. In der Tat war das Umdrehen des Z-Zeichens und des Tiefentests einst eine wichtige Leistungsoptimierung für viele Spiele.
Wenn ich es richtig verstehe, ist das Umdrehen des Vorzeichens von Z und des Tiefentests nichts anderes, als einen <
Vergleich in einen >
Vergleich umzuwandeln. Also, wenn ich das richtig verstanden , und der Autor nicht lügt oder Dinge zu machen, dann Wechsel <
zu >
verwendenden eine wichtige Optimierung für viele Spiele.
Erfindet der Autor Dinge, verstehe ich etwas falsch oder ist es tatsächlich so, dass es einmal <
langsamer war ( lebenswichtig , wie der Autor sagt) als >
?
Vielen Dank für die Klärung dieser ziemlich merkwürdigen Angelegenheit!
Haftungsausschluss: Mir ist völlig bewusst, dass die Komplexität von Algorithmen die Hauptquelle für Optimierungen ist. Außerdem vermute ich, dass es heutzutage definitiv keinen Unterschied machen würde und ich bitte dies nicht, um etwas zu optimieren. Ich bin nur extrem, schmerzhaft, vielleicht unerschwinglich neugierig.