使用glBlitFramebuffer

时间:2019-01-30 08:49:45

标签: opengl 3d pyopengl fbo

我有一个小型的OpenGL应用程序,我正在寻找一次消除多个纹理缓冲区的最佳方法。

比方说,我有两个帧缓冲区(fbo1fbo2),每个帧缓冲区包含两个纹理缓冲区。我有一个带有四个纹理缓冲区的目标fbo(fbo3)。我想将所有纹理从fbo1fbo2拖到fbo3

目前,我正在针对每种纹理分别进行处理,

glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo1)
glReadBuffer(GL_COLOR_ATTACHMENT0)
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo3)
glDrawBuffer(GL_COLOR_ATTACHMENT0)

glBlitFramebuffer(0, 0, width, height, 0, 0, ds_width, ds_height, GL_COLOR_BUFFER_BIT, GL_LINEAR)

glBindFramebuffer(GL_READ_FRAMEBUFFER, 0)
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0)

通常如何进行?甚至可行吗?

1 个答案:

答案 0 :(得分:0)

这不是“通常”完成的操作,因为人们通常不会大量复制一堆帧缓冲图像。实际上,如果确实如此,则强烈暗示您可能做错了事。

唯一的方法就是您在这里完成的操作(尽管不需要重新绑定帧缓冲区):每次都更改读取/绘制缓冲区并变位。