OpenGL:仅使用一个帧缓冲区并切换目标纹理

1 opengl fbo framebuffer

除了使用多个帧缓冲对象,我还可以创建一个并通过在需要时切换它的目标纹理来获得相同的结果吗?

  • 这在所有情况下都是一个坏主意吗?如果是,为什么?

我一直render.SetTargetTexture()在我的程序的API中实现一个函数,从逻辑上讲,如果在幕后使用更多的帧缓冲区,它将无法工作.那时我必须完全暴露帧缓冲区.

dat*_*olf 6

FBO本身只是一些逻辑构造,由实现维护,它只消耗其参数所需的小内存.FBO的主要目的是使对象保持一致的状态.

每当您对FBO的结构进行更改时,实现都必须检查其有效性和完整性.OpenGL规范没有说明此操作的复杂性,但可以安全地假设对FBO结构的更改是关于最耗时的操作(可能是大幅度的).

由于FBO本身不会消耗值得注意的内存,因此只有附件占用内存,这些内存是独立的对象,分配多个FBO并切换它们是我的建议.