我在游戏中使用了延迟渲染器。因此,第一个渲染过程是使用多个渲染rarget并填充深度缓冲区来创建反照率和普通缓冲区。所有这些缓冲区实际上都是纹理。
现在我想从其他渲染过程中访问深度缓冲区,从而在不改变深度纹理的情况下访问其他帧缓冲区。我只想读深度值。对于那些传球,我主要绘制全屏四边形,我不希望它们更新深度纹理并将其消隐为深度值0。
如何将给定深度纹理附加到另一个帧缓冲区并确保它是只写的?
答案 0 :(得分:3)
您可以将相同的深度缓冲区附加到其他帧缓冲区(如果要在绘制光量时使用深度测试,则只需执行此操作)。禁用这些传递的深度写入(glDepthMask(GL_FALSE)
)。您还可以将深度缓冲区(假设它是纹理而不是渲染缓冲区)绑定到纹理单元,并在着色器中从中读取深度值。你不能做的唯一的事情是同时从同一个纹理读取和写入,但你不想这样做。