我正在将四边形网格渲染到 OpenGL 中的屏幕外帧缓冲区,其中可能有重叠的四边形(将更多片段放入单个帧缓冲区像素中)。所有四边形都位于平面 y=0 中。我想知道是否有一种简单的方法可以为具有重叠四边形的像素设置颜色(例如黑色)(最好不需要额外的着色器通道,使用简单的 OpenGL 功能)。
问问题
328 次
1 回答
1
您可以使用模板缓冲区来计算每个像素的“过度绘制”,例如
glClear(GL_STENCIL_BUFFER_BIT)<
glEnable(GL_STENCIL_TEST);
glStencilOp(GL_KEEP, GL_INCR, GL_INCR);
glStencilFunc(GL_ALWAYS, 0, 0xffffff);
这将简单地将模板缓冲区清除为 0 并为之后绘制的每个片段(以及您生成的所有片段,但深度测试失败)增加它。绘制完所有四边形后,您可以使用所需颜色绘制另一个全屏四边形,但模板测试设置为
glStencilFunc(GL_GREATER, 1, 0xffffff);
仅影响具有多个四边形的像素。这仍然需要某种“额外通过”,但模板测试非常有效。
于 2013-04-28T11:59:55.713 回答