是否可以在上下文/线程之间共享一个opengl帧缓冲对象?

时间:2010-12-08 08:53:12

标签: windows multithreading opengl framebuffer openglcontext

我想在一个线程中渲染我的场景,然后在另一个线程拥有的窗口中将结果blit。为了避免将帧缓冲区读回到cpu内存,我想使用framebuffer对象。到目前为止,我还没有能够使这个工作(白色纹理),这让我相信opengl不支持这个。

  1. 是否可以在不同的上下文之间共享帧缓冲对象?
  2. 是否有可能在不同的线程之间共享一个帧缓冲对象,假设该对象一次只能被一个线程绑定?
  3. 如果有人可以指出我在文档中描述的位置,那将是一个奖励。

1 个答案:

答案 0 :(得分:9)

无法在不同的上下文之间共享帧缓冲区。请参阅附录D的第一段,OpenGL 3.3规范。但是,您可以共享纹理和渲染缓冲区,这应该可以满足您的需要。

至于线程:它应该是可能的,但通常建议不要从多个线程发出GL命令(因为它很难同步)。通常,您将内容复制到pixel-buffer-object并从GL线程映射,然后使用另一个线程中的映射指针。