2011-03-31 135 views
5

我通過繪製一個離屏紋理(由屏幕外幀緩衝區創建)來成功渲染我的OpenGL視圖。如何在2個OpenGL上下文之間共享紋理?

draw -> offscreen FBO/Texture ------> onscreen FBO ---> render buffer -> context 

現在我想重用幕後紋理渲染另一個OpenGL上下文。

draw -> offscreen FBO/Texture ----> onscreen FBO ---> render buffer -> context 
          \----> onscreen FBO2---> render buffer2 ->context 2 

我試過,但無法呈現什麼情況下2 任何人有這個問題,並知道如何配置共享的質感?

謝謝!

更新: 我剛剛創建了一個簡單的項目,描述了我正在使用Framebuffer和雙上下文進行的操作。 http://www.mediafire.com/?vxv1bubzvio4q7h

+0

任何人都有與共享組一起使用的示例代碼? – KONG 2011-04-03 04:37:28

回答

2
+0

我試圖創建context2的相同共享組中的context2,然後使用在context1中創建的紋理標識來呈現context2。但是當context1仍然渲染正常時,我在context2中沒有結果。兩個上下文都在主線程中,我在渲染紋理之前綁定紋理,在每個上下文中渲染之後調用glFlush。 – KONG 2011-03-31 04:37:37

+0

你確定要調用[EAGLContext setCurrentContext:context];在每個上下文中呈現之前。 – 2011-03-31 04:41:24

+0

我很確定。我所做的是從Apple目前的EAGLView示例中繼承子類,並在調用紋理渲染代碼之前調用setFramebuffer(其中包含setContext)。有沒有任何調試方式來確保我可以訪問context2中的texture1? – KONG 2011-03-31 05:02:32

1

我知道你要分享的紋理和我不是,但你的症狀似乎是我的一樣我提供這個答案。 ..

在我的情況,我綁定紋理時也得到一個GL_INVALID_VALUE。事實證明,在創建紋理之前,我沒有切換到第二個上下文。因此,它們是在第一個環境中創建的。我的渲染,但是WAS切換上下文,因此無法找到紋理。

相關問題