2010-12-08 109 views
14

我想在一個線程中呈現我的場景,然後在另一個線程擁有的窗口中blit結果。爲避免將framebuffer讀回到cpu內存,我想使用framebuffer對象。到目前爲止,我還沒有能夠得到這個工作(白色紋理),這讓我相信這不被opengl支持。是否可以在上下文/線程之間共享一個opengl framebuffer對象?

  1. 是否有可能在不同的上下文之間共享framebuffer對象?
  2. 假如對象一次只綁定一個線程,是否可以在不同的線程之間共享幀緩衝區對象?

如果有人能指出我在文檔中描述的位置,那將是一種獎勵。

+0

賞金將授予任何人的工作示例代碼 - 死或活:)或至少一步一步指導如何設置FBO共享,或實現它使用共享紋理和渲染緩衝區。 – Suma 2011-05-31 08:57:50

+0

@Suma共享紋理是平臺特定的。在Windows中,它使用wglShareLists()完成,它需要在生成使用glFramebufferTexture()附加到FBO的紋理之前調用。我的理解是,即使您的OpenGL實現/版本不允許您直接共享FBO,也應該能夠從其他上下文中使用此紋理。 – Plow 2011-05-31 12:04:03

回答

9

不可能在不同的上下文之間共享幀緩衝區。請參閱附錄D OpenGL 3.3規範的第一段。不過,你可以共享紋理和渲染緩衝區,這應該讓你想要你的需要。

至於線程:它應該是可能的,但通常建議不要從多線程發出GL命令(因爲它很難同步)。通常,您會將內容複製到像素緩衝區對象,然後將其映射到GL線程,然後使用來自其他線程的映射指針。

相關問題