每帧重新创建FBO(帧缓冲对象)

时间:2017-06-14 10:04:33

标签: opengl framebuffer fbo

我想创建FBO,但这将在所有上下文之间“共享”。 因为FBO是容器而不能“共享”,而只能是它的缓冲区,我想这样做:

  1. 创建一个对象FBODescriptor,它是所需FBO的描述符,它还包含共享的opengl缓冲区。

  2. 每个框架,以及任何处于活动状态的上下文中,我创建了FBO(因此可用于当前上下文),将缓冲区附加到其上,然后删除FBO渲染后的容器。

  3. 通过这种方式,我有一个可用于任何环境的理想FBO。

    我的假设是因为资源缓冲区是存在的,并且不需要为每个帧重新创建它们而只需要重新创建FBO容器,因此它没有有意义的惩罚。

    可以吗?

1 个答案:

答案 0 :(得分:0)

这将起作用,因为它将起作用。但它绝不是。实际上,您提出的任何解决方案都会立即丢弃“每帧创建一个OpenGL对象”。或至少被认为是高度怀疑。

FBO经常对其州进行大量验证。这不是便宜。实际上,建议通常是在完成FBO之后根本不修改FBO。不要附加新图像,不要删除它们,任何东西。这显然包括删除和重新创建它们。

如果要跨越上下文将更改传播到帧缓冲区,那么您应该以只需 时修改或重新创建FBO的方式执行此操作。也就是说,当他们真正改变时。