我想创建FBO,但这将在所有上下文之间“共享”。 因为FBO是容器而不能“共享”,而只能是它的缓冲区,我想这样做:
创建一个对象FBODescriptor,它是所需FBO的描述符,它还包含共享的opengl缓冲区。
在每个框架,以及任何处于活动状态的上下文中,我创建了FBO(因此可用于当前上下文),将缓冲区附加到其上,然后删除FBO渲染后的容器。
通过这种方式,我有一个可用于任何环境的理想FBO。
我的假设是因为资源缓冲区是存在的,并且不需要为每个帧重新创建它们而只需要重新创建FBO容器,因此它没有有意义的惩罚。
可以吗?
答案 0 :(得分:0)
这将起作用,因为它将起作用。但它绝不是好。实际上,您提出的任何解决方案都会立即丢弃“每帧创建一个OpenGL对象”。或至少被认为是高度怀疑。
FBO经常对其州进行大量验证。这不是便宜。实际上,建议通常是在完成FBO之后根本不修改FBO。不要附加新图像,不要删除它们,任何东西。这显然包括删除和重新创建它们。
如果要跨越上下文将更改传播到帧缓冲区,那么您应该以只需 时修改或重新创建FBO的方式执行此操作。也就是说,当他们真正改变时。