- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用 glDisable(GL_DEPTH_TEST)
禁用深度测试,认为它只会禁用深度“测试”。我猜我感到困惑的原因是因为我创建了两个函数,一个禁用深度“测试”,另一个禁用深度“写入” glDepthMask(GL_FALSE);
如果禁用 GL_DEPTH_TEST
禁用“测试”和“写作”那么它是否等同于做:
glDepthFunc(GL_ALWAYS); // DISABLE TESTS (OR ACTUALLY ALWAYS LET THE TEST SUCCEED)
glDepthMask(GL_FALSE); // DISABLE WRITES
我认为禁用 GL_DEPTH_TEST
没什么用除非我想同时禁用测试和写入,并且我想知道哪个更好。措辞似乎令人困惑,但也许这只是我。我想用 glDepthFun(GL_ALWAYS)
禁用深度测试仍然会进行比较,我想没有办法在仍然允许写入的同时完全禁用深度测试?
最佳答案
glDisable(GL_DEPTH_TEST)
关闭管道的深度测试。如果您使用:
glDepthFunc(GL_ALWAYS);
glDepthMask(GL_FALSE);
相反,它只是在条件后隐藏它(但仍存在于管道中),这可能意味着某些平台上的性能差异......
同样使用你的等价物需要你设置/记住原始的 DepthFunc
以防你想再次打开它(因为有许多渲染技术需要切换 DeptTest
开/关几次。
最后,两次 GL 函数调用比一次调用的开销更大。因此,从性能的角度来看,使用 glDisable(GL_DEPTH_TEST)
对此更好。 glDepthFunc,glDepthMask
用于不同的目的,如多 channel 渲染,order independent transparency , holes等等……
关于OpenGL GL_DEPTH_TEST 与 glDepthFunc 和 glDepthMask 的对比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48658319/
在我的应用程序中,我有一些着色器只写入深度缓冲区,以便稍后用于阴影。我还有一些其他着色器可渲染全屏四边形,其深度不会影响所有后续绘制调用,因此它的深度值可能会被丢弃。 假设应用程序在现代硬件(5 年前
我有时会在帧渲染期间通过 glDepthMask(GL_FALSE) 禁用深度缓冲区写入。这在某些 GPU 上运行得非常好(比如摩托罗拉 Droid 的 PowerVR),但是在带有 Adreno G
我一直在使用 glDisable(GL_DEPTH_TEST)禁用深度测试,认为它只会禁用深度“测试”。我猜我感到困惑的原因是因为我创建了两个函数,一个禁用深度“测试”,另一个禁用深度“写入” glD
我是一名优秀的程序员,十分优秀!