gpt4 book ai didi

c++ - OpenGL Stenciling,将 ref 与写入的值分开?

转载 作者:行者123 更新时间:2023-11-30 01:46:43 25 4
gpt4 key购买 nike

下面的代码设置模板测试以查看ref是否大于模板缓冲区中的存储值,如果是,它会写入ref到模板缓冲区

unsigned int ref = 42;
glStencilFunc(GL_GREATER, ref, 0xFF);
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);

问题是,虽然我确实想根据 ref 测试模板缓冲区,但我不想向它写入 ref如果成功,我想写一个完全不同的值。我发现的唯一选项是 GL_INCR,它可以代替 GL_REPLACE,但是如果模板缓冲区已经写入了很多东西,那么这就不是很有用了无法提前清除。

有没有办法...比如说,测试 42 是否大于模板缓冲区中存储的值,如果是,则向其中写入 100 或其他值?

最佳答案

我认为此功能在标准 OpenGL 中不可用。我找到的最接近的是供应商特定的扩展:AMD_stencil_operation_extended .

这正是您要找的东西:

Additionally, this extension separates the value used as the source for stencil operations from the reference value, allowing different values to be used in the stencil test, and in the update of the stencil buffer.

仅通过阅读规范,调用应该看起来像这样,val 是您要设置的模板值:

glStencilFunc(GL_GREATER, ref, 0xFF);
glStencilOpValueAMD(GL_FRONT_AND_BACK, val);
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE_VALUE_AMD);

关于c++ - OpenGL Stenciling,将 ref 与写入的值分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32711045/

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