如何将多重采样深度缓冲区解析为深度纹理?

时间:2013-09-17 14:28:51

标签: opengl framebuffer depth-buffer render-to-texture multisampling

我遇到了msaa深度缓冲区解析为深度纹理的问题。我为我的颜色纹理和深度纹理创建了glTexImage2d,并将它们绑定到“resolve”(非msaa)帧缓冲区。然后我创建并绑定另一个帧缓冲区并创建我的多重采样渲染缓冲区(颜色和深度)。我知道从多重采样渲染缓冲区获取我的颜色纹理信息我只是blit,写缓冲区是我的颜色纹理帧缓冲区,读缓冲区是我的msaa-framebuffer。我的问题是如何将我的多重采样深度缓冲区blit到我的深度纹理。

1 个答案:

答案 0 :(得分:4)

您可以按照与颜色缓冲区相同的方式执行此操作,只有使用GL_DEPTH_BUFFER_BIT并确保使用GL_NEAREST作为过滤模式。如果您想在深度/模板缓冲区上进行线性过滤,无论出于何种原因,如果您使用深度纹理(当然这对于MSAA纹理仍然无效),您实际上可以在GLSL中执行此操作 - 但使用{执行此操作无效{1}}。

当您想要选择单个颜色缓冲区时,您不必像执行任何glBlitFramebuffer (...)废话一样,glReadBuffer (...)会将深度缓冲区从绑定的glBlitFramebuffer (...)复制到绑定GL_READ_FRAMEBUFFER