投影网格后获取像素的多个深度值

时间:2019-07-04 08:27:53

标签: opengl

我需要在一个像素上记录多个深度值。我有一个网格,当投影到图像上时,我们可以推断像素位置的深度。该深度给出最接近的多边形距离。

但是我们可以获得在像素(x,y)上投影的所有多边形的深度值吗?

如果是这样,有人可以在Opengl中提供帮助吗?

1 个答案:

答案 0 :(得分:0)

我认为没有天真的方法。

但这是个主意。

首先预分配一些深度缓冲区,例如16。这将是您可以存储的最大深度的最大数量。

将所有深度缓冲区清除为无穷大(最大深度)。

通常绘制到第一个深度缓冲区(GL_LESS)。

对于以下缓冲区,我们将进行不同的绘制。 我们将以前的深度缓冲区作为片段着色器的输入。在片段着色器中,我们进行了一些手动深度测试。

if(currentDepth <= previousDepth) {
    discard;
}

我们在这里所做的是“仅在片段比前一个片段更远的情况下考虑它”。硬件深度测试可以同时完成任务。

因此,每次迭代的结果都是最接近的片段,该片段比前一个片段更远。最后,我们得到了“一系列深度切片”。