首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL GL_DEPTH_TEST对glDepthFunc和glDepthMask?

OpenGL GL_DEPTH_TEST对glDepthFunc和glDepthMask?
EN

Stack Overflow用户
提问于 2018-02-07 07:38:53
回答 1查看 1.6K关注 0票数 2

我一直在使用glDisable(GL_DEPTH_TEST)禁用深度测试,认为它只禁用深度“测试”。我之所以感到困惑,是因为我创建了两个函数,一个用于禁用深度“测试”,另一个用于使用glDepthMask(GL_FALSE);禁用深度“写”

如果禁用GL_DEPTH_TEST同时禁用“测试”和“写入”,那么它是否等同于执行:

代码语言:javascript
复制
glDepthFunc(GL_ALWAYS​); // DISABLE TESTS (OR ACTUALLY ALWAYS LET THE TEST SUCCEED)
glDepthMask(GL_FALSE); // DISABLE WRITES

我认为禁用GL_DEPTH_TEST没有什么用处,除非我想同时禁用测试和写,我想知道哪一个更好。措辞似乎很混乱,但也许只有我一个人。我认为使用glDepthFun(GL_ALWAYS)进行禁用深度测试仍然可以进行比较,我认为在允许写操作的同时,不可能完全禁用深度测试?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-07 08:10:26

代码语言:javascript
复制
glDisable(GL_DEPTH_TEST)

关闭管道深度测试。如果你使用:

代码语言:javascript
复制
glDepthFunc(GL_ALWAYS​);
glDepthMask(GL_FALSE);

相反,它只是在条件(但仍然存在于管道中)之后隐藏它,这可能意味着某些平台的性能差异.

同样,如果您想再次打开原始DepthFunc (因为有许多渲染技术需要多次打开/关闭DeptTest ),则需要设置/记住原始的DeptTest

最后,两个GL函数调用的开销大于一个。因此,从性能的角度来看,使用glDisable(GL_DEPTH_TEST)更好。glDepthFunc,glDepthMask用于多通道渲染、order independent transparencyholes等多种用途。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48658319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档