给fbo提供预先存在的纹理以在其上绘制

时间:2014-07-11 09:49:25

标签: opengl textures rendering framebuffer

我想知道是否可以为帧缓冲区提供非NULL纹理以在其上呈现。我的意思是只是画上它所以它将成为最终纹理的背景。

从我尝试过的只是保留我给出的纹理并直接渲染它,它上面没有绘图(好像绘图部分没用了)。 如果我给出一个NULL纹理,那么绘图就完成了。

所以我想知道它是否可能,我只是错误地做错了吗?

所有使用fbo的例子我看过只显示发送的NULL纹理。

1 个答案:

答案 0 :(得分:1)

您尝试做的事情并不像FBO附件中的内容从头开始呈现的用例那么常见。这就是为什么你没有找到尽可能多的例子。

但是,它仍然完全合法,并且应该有效。唯一的区别应该是在将纹理附加到FBO并开始渲染后不要调用glClear()

您必须小心的一种情况是,如果您在原始纹理内容之上使用深度缓冲来进行渲染。在这种情况下,您通常需要在FBO中使用深度缓冲附件(通常是渲染缓冲区)。在这种情况下,在开始渲染之前,您需要清除深度缓冲区,但颜色缓冲区:

glClear(GL_DEPTH_BUFFER_BIT);