我将首先介绍我打算做什么,我的问题是如何在深度缓冲区上实现实际操作:
一般情况有一个平面P,它将两个半空间A和B分开。摄像机在A中。我有一些几何形状,所有这些都需要通过深度测试来渲染。有些仅包含在A中,有些仅包含在B中,有些可能位于边界平面P上。
目标现在我希望在区域A和B中使用不同的顶点着色器进行渲染,尽管这些顶点着色器在边界平面P上的行为相同。这一点的细节并不重要。我希望如何绘制这些内容的以下细节非常重要。
关于此工作流程的评论这将提供我想要的效果并且应该是高效的,因为当我们绘制几何图形时,我们不会丢弃片段或设置片段着色器中的深度。包含在两个区域中的三角形被绘制两次,每次调用一次,但这是不可避免的。我们“破坏规则”的唯一一次是在第3步,但这根本不涉及太多的计算。
问题如何在步骤3中编辑深度缓冲区?我想使用OpenGL ES 2.0(WebGL)。
或我可以使用模板缓冲区来达到同样的效果吗?如果是这样,怎么样?