下面的代码设置模具测试,以查看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或其他东西到它?
发布于 2015-09-22 05:29:46
我不相信这个功能在标准OpenGL中是可用的。我发现的最接近的扩展是一个特定于供应商的扩展:扩展。
这正好支持您要寻找的内容:
此外,此扩展将用作模具操作源的值与引用值分离,允许在模具测试和模具缓冲区更新中使用不同的值。
通过阅读规范,调用应该如下所示,val
是您想要设置的模具值:
glStencilFunc(GL_GREATER, ref, 0xFF);
glStencilOpValueAMD(GL_FRONT_AND_BACK, val);
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE_VALUE_AMD);
https://stackoverflow.com/questions/32711045
复制相似问题