gpt4 book ai didi

opengl - 没有早期 z 剔除的早期模板剔除

转载 作者:行者123 更新时间:2023-12-04 01:41:59 24 4
gpt4 key购买 nike

我已经有了答案的想法,但我需要确定。

我分两次渲染一个场景。
在第一遍中,如果深度测试成功,我将模板位标记为 1 :

glEnable(GL_STENCIL_TEST);
glStencilMask(GL_TRUE);
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
glStencilFunc(GL_ALWAYS, 1, GL_TRUE);

第二遍只写入 stencil 为 1 的地方:
glStencilFunc(GL_EQUAL, 1, GL_TRUE); // Pass test if stencil value is 1
glStencilMask(GL_FALSE); // Don't write anything to stencil buffer

事实上,这可以正常工作,但我预计性能会大幅提高。
第二遍使用的着色器很特别:它使用 discardgl_FragDepth做作。
这使得 early-z 剔除变得不可能。幸运的是,我只对早期模板剔除感兴趣。

所以我的问题是:有没有办法利用早期模板剔除 不使用 early-z 剔除 ?

该线程与此非常相关 one ,但我真的需要使用 discardgl_FragDepth第二个着色器中的做作......

最佳答案

没有早期模板测试这样的东西。或者早期的 Z/深度测试。只有early fragment tests ,这恰好包括模板和深度测试,但也包括其他操作。它们不能在零碎的早期进行;一切都早或晚了。

关于opengl - 没有早期 z 剔除的早期模板剔除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56990966/

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