1

我在游戏中使用了延迟渲染器。因此,第一个渲染通道是使用多个渲染参数创建反照率和正常缓冲区并填充深度缓冲区。所有这些缓冲区实际上都是纹理。

现在我想从其他渲染通道访问深度缓冲区,从而访问其他帧缓冲区,而不改变深度纹理。我只想读取深度值。对于这些通道,我主要绘制全屏四边形,我不希望它们更新深度纹理并将其消隐到深度值 0。

如何将给定的深度纹理附加到另一个帧缓冲区并确保它是只写的?

4

1 回答 1

3

您可以将相同的深度缓冲区附加到其他帧缓冲区(如果您想在绘制光体积时使用深度测试,则只需要这样做)。禁用这些通道的深度写入 ( glDepthMask(GL_FALSE))。您还可以将深度缓冲区(假设它是纹理而不是渲染缓冲区)绑定到纹理单元并在着色器中从中读取深度值。您唯一不能做的就是同时从同一个纹理读取和写入,但无论如何您都不想这样做。

于 2013-06-14T09:12:10.030 回答