将深度渲染缓冲区复制到深度缓冲区

Posted

技术标签:

【中文标题】将深度渲染缓冲区复制到深度缓冲区【英文标题】:Copying depth render buffer to the depth buffer 【发布时间】:2012-07-03 16:51:11 【问题描述】:

目前我正在将一些东西渲染到带有附加深度渲染缓冲区的 FBO。

但是,在我完成渲染缓冲区之后,深度信息几乎丢失了。

如何将数据从渲染缓冲区复制到固定函数深度缓冲区?

【问题讨论】:

【参考方案1】:

您可以使用glBlitFramebuffer,启用GL_DEPTH_BUFFER_BIT 标志。

示例代码:

glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo_id);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);

glBlitFramebuffer(offset_x, offset_y, offset_x + size_x, offset_y + size_y,
                  offset_x, offset_y, offset_x + size_x, offset_y + size_y,
                  GL_DEPTH_BUFFER_BIT,
                  GL_NEAREST);

这将仅复制深度缓冲区。

【讨论】:

我实际上对此有一个简短的问题?它将深度缓冲区从 FBO 复制到默认帧缓冲区的深度缓冲区,但是如果您希望将深度数据可视化为 RGB 图像,有没有办法可以将深度值复制到颜色缓冲区(窗口帧缓冲区)?或者如果你愿意,你会渲染到纹理吗?

以上是关于将深度渲染缓冲区复制到深度缓冲区的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL(FBO)中的普通后台缓冲区+渲染到深度纹理

(阴影贴图)将深度缓冲区渲染到纹理并绘制它以检查它

OpenGL 四 - 002OpenGL 图形渲染之颜色混合

将深度缓冲区提取到数组

延迟渲染:在默认帧缓冲区中使用来自 Gbuffer 的深度缓冲区

在仅触及深度缓冲区的openGL中进行绘图调用