我正在读一个很棒的OpenGL教程。真的很棒,相信我。我目前的主题是Z-buffer。除了解释它的全部内容外,作者还提到我们可以执行自定义深度测试,例如GL_LESS, GL_ALWAYS等。他还解释说,深度值的实际含义(哪些是top,哪些不是)也可以自定义。到目前为止我明白了。然后作者说了一些难以置信的话
zNear范围可以大于zFar范围;如果是,那么 窗口空间的值将颠倒,就构成内容而言
前面说过,窗口空间Z值为0是最接近和的 1是最远的。然而,如果我们的剪辑空间Z值为负,则 深度为1的最接近视图,深度为0的最接近视图 最远的。然而,如果我们翻转深度测试的方向(GL_LESS到 GL_GREATER,等等),我们得到完全相同的结果。所以它实际上就是a 公约。的确,翻转Z的符号和深度测试是一次 许多游戏的重要性能优化。
如果我理解正确的话,在性能方面,翻转Z的符号和深度测试只不过是将<
比较更改为>
比较。所以,如果我理解正确,作者没有说谎或编造事情,那么改变<
到>
曾经是许多游戏的一个重要的优化。
是作者在胡编乱造,还是我误解了什么,或者确实是这样,曾经<
比>
慢(正如作者所说的极其) ?
谢谢你澄清这个相当奇怪的问题!
免责声明:我充分意识到算法的复杂性是优化的主要来源。此外,我怀疑现在它肯定不会有任何不同,我并不是要求优化任何东西。我只是极度的,痛苦的,也许是极度的好奇。