gpt4 book ai didi

OpenGL GL_DEPTH_TEST 与 glDepthFunc 和 glDepthMask 的对比?

转载 作者:行者123 更新时间:2023-12-02 09:14:14 28 4
gpt4 key购买 nike

我一直在使用 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com