gpt4 book ai didi

opengl - 绘制一个对象,比较两个不同的模板缓冲区值

转载 作者:行者123 更新时间:2023-12-04 09:45:57 31 4
gpt4 key购买 nike

首先绘制 Geometry_A 并使用以下值写入模板缓冲区。

glStencilOp(GL_REPLACE, GL_KEEP, GL_KEEP);  // replace stencil buffer values to ref=1
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
glStencilFunc(GL_NEVER, 1, 0xFF); // never pass stencil test
glStencilMask(0xFF);
Draw Geometry_A

绘制 Geometry_B 并使用以下值写入模板缓冲区。
 glStencilFunc(GL_NEVER, 2, 0xFF); // never pass stencil test
glStencilMask(0xFF);
Draw Geometry_B

Draw Geomtery_C 比较 Geometry_A 的模板值
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glStencilFunc(GL_EQUAL, 1, 0xFF);

Draw Geomtery_D 比较 Geometry_B 的模板值
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glStencilFunc(GL_EQUAL, 2, 0xFF);

我们可以绘制一个几何图形比较来自 Geometry_A 和 Geometry_B 的模板缓冲区的值吗

就像是。
glStencilFunc(GL_EQUAL, 1 & 2, 0xFF);

最佳答案

Can we draw a geometry comparing both the values of stencil buffer from Geometry_A and Geometry_B



是的,当然,只需在模板缓冲区中设置一点,而不是更改所有位。

设置位掩码 0x01对于几何 Geometry_A
glStencilFunc(GL_NEVER, 1, 0xFF); // never pass stencil test
glStencilMask(0x01);

设置位掩码 0x02对于几何 Geometry_B
glStencilFunc(GL_NEVER, 2, 0xFF); // never pass stencil test
glStencilMask(0x02);

如果要找到绘制 Geometry_A 和 Geometry_B 的部分,则必须查找测试是否设置了模板缓冲区中的前 2 位。
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glStencilFunc(GL_EQUAL, 3, 0x03);

请注意,使用这种方法,位 3 到 8 根本不受影响。

关于opengl - 绘制一个对象,比较两个不同的模板缓冲区值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62114321/

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