我需要在一个像素上记录多个深度值。我有一个网格,当投影到图像上时,我们可以推断像素位置的深度。该深度给出最接近的多边形距离。
但是我们可以获得在像素(x,y)上投影的所有多边形的深度值吗?
如果是这样,有人可以在Opengl中提供帮助吗?
答案 0 :(得分:0)
我认为没有天真的方法。
但这是个主意。
首先预分配一些深度缓冲区,例如16。这将是您可以存储的最大深度的最大数量。
将所有深度缓冲区清除为无穷大(最大深度)。
通常绘制到第一个深度缓冲区(GL_LESS
)。
对于以下缓冲区,我们将进行不同的绘制。 我们将以前的深度缓冲区作为片段着色器的输入。在片段着色器中,我们进行了一些手动深度测试。
if(currentDepth <= previousDepth) {
discard;
}
我们在这里所做的是“仅在片段比前一个片段更远的情况下考虑它”。硬件深度测试可以同时完成任务。
因此,每次迭代的结果都是最接近的片段,该片段比前一个片段更远。最后,我们得到了“一系列深度切片”。