1

情况如下:我有一个包含一些深度值的纹理。我想使用该纹理作为深度缓冲区来渲染一些几何图形,但我希望将颜色写入普通帧缓冲区(即窗口的帧缓冲区)。

我该怎么做呢?我尝试创建一个 FBO 并仅将深度纹理绑定到它(GL_DEPTH_COMPONENT),但这不起作用;没有任何颜色出现。

4

1 回答 1

2

不,你不能。您正在渲染的 FBO 可能是主帧缓冲区或离屏缓冲区。你不能以任何方式混合它们。

相反,我建议您渲染到颜色渲染缓冲区,然后在主帧缓冲区中执行简单的 blitting 操作。

编辑-1。

或者,如果您已经在主 FB 中有深度,您可以先对深度进行 blit,然后渲染到主 FB,从而在额外的颜色渲染缓冲区中节省视频内存。

PS Blitting 是通过glBlitFramebuffer. 为了使其工作,您应该为它们中的每一个设置GL_READ_FRAMEBUFFER,GL_DRAW_FRAMEBUFFER和 glDrawBuffer() 。

于 2011-03-12T03:46:34.613 回答