我正在阅读一个很棒的OpenGL教程。真的很好,相信我。我当前所在的主题是Z缓冲区。除了解释全部内容之外,作者还提到我们可以执行自定义深度测试,例如GL_LESS,GL_ALWAYS等。他还解释了深度值的实际含义(最高和最低)也可以是定制。到目前为止我还了解。然后作者说了一些难以置信的话:
zNear范围可以大于zFar范围;如果是这样,那么就构成距观看者最近或最远的位置而言,窗口空间值将反转。
此前,有人说窗口空间Z值0最接近,而1最远。但是,如果我们的剪辑空间Z值被取反,则深度1将最接近视图,深度0将最远。但是,如果翻转深度测试的方向(GL_LESS到GL_GREATER等),我们将得到完全相同的结果。因此,这实际上只是一个约定。确实,翻转Z的符号和深度测试曾经是许多游戏中至关重要的性能优化。
如果我正确理解,从性能角度来看,翻转Z的符号和深度测试仅是将<
比较更改为比较而已>
。因此,如果我理解正确,而作者并没有在撒谎或编造东西,那么更改<
为>
过去对于许多游戏来说都是至关重要的优化。
作者是在编造东西吗,我是在误解某些东西,还是真的曾经比<
他慢(如作者所说,生命至关重要)>
?
感谢您澄清这个非常奇怪的问题!
免责声明:我完全知道算法复杂性是优化的主要来源。此外,我怀疑现在绝对不会有任何改变,我不是要优化它。我只是极度,痛苦,甚至是好奇。