仅当在另一个网格后面时才渲染网格

时间:2019-07-02 10:25:07

标签: c++ opengl glsl shader stencil-buffer

仅在网格物体位于另一个网格物体(“窗口网格物体”)之后,才尝试渲染网格物体(“内容网格物体”)(进行深度测试)。

第一个解决方案是使用模板缓冲区仅在已写入“窗口网格”的位置进行写入。

我的问题是“内容网格”可以位于“窗口网格”的前面,在这种情况下,我想丢弃碎片(仅在后面可见)。

我可以简单地将“窗口网格”的深度坐标保存在纹理中,并使用该信息丢弃“内容网格”的片段。

但是,这意味着要进行纹理查找,并使用16位浮点数进行自定义的deph测试。

还有另一种方法吗?

PS:How to render a mesh behind another mesh, like a mask?该线程几乎为我提供了解决方案,但就我而言,当它位于“窗口网格”之前时,我根本不想渲染“内容网格”。

1 个答案:

答案 0 :(得分:0)

我使用纹理存储深度,并使用它丢弃比该深度更近的片段。 工作正常。我对此感到很满意。