情况如下:我有一个包含一些深度值的纹理。我想使用该纹理作为深度缓冲区渲染一些几何体,但我希望将颜色写入正常的帧缓冲区(即窗口的帧缓冲区)。
我该怎么做?我尝试创建一个FBO,只绑定一个深度纹理(GL_DEPTH_COMPONENT)但是没有用;没有出现任何颜色。
答案 0 :(得分:2)
不,你不能。您渲染的FBO可能是主帧缓冲区或屏幕外缓冲区。你不能以任何方式混合它们。
相反,我建议您渲染一个颜色渲染缓冲区,然后对主帧缓冲区进行简单的blitting操作。
编辑-1。
或者,如果你已经在主FB中有深度,你可以先进行深度渲染,然后渲染到主FB,从而将视频内存保存在附加的颜色渲染缓冲区上。
P.S。 Blitting通过glBlitFramebuffer
完成。为了使其有效,您应为每个人设置GL_READ_FRAMEBUFFER
,GL_DRAW_FRAMEBUFFER
和glDrawBuffer()。