情况如下:我有一个包含一些深度值的纹理。我想使用该纹理作为深度缓冲区来渲染一些几何图形,但我希望将颜色写入普通帧缓冲区(即窗口的帧缓冲区)。
我该怎么做呢?我尝试创建一个 FBO 并仅将深度纹理绑定到它(GL_DEPTH_COMPONENT),但这不起作用;没有任何颜色出现。
不,你不能。您正在渲染的 FBO 可能是主帧缓冲区或离屏缓冲区。你不能以任何方式混合它们。
相反,我建议您渲染到颜色渲染缓冲区,然后在主帧缓冲区中执行简单的 blitting 操作。
编辑-1。
或者,如果您已经在主 FB 中有深度,您可以先对深度进行 blit,然后渲染到主 FB,从而在额外的颜色渲染缓冲区中节省视频内存。
PS Blitting 是通过glBlitFramebuffer
. 为了使其工作,您应该为它们中的每一个设置GL_READ_FRAMEBUFFER
,GL_DRAW_FRAMEBUFFER
和 glDrawBuffer() 。