【问题标题】:how to share texture between 2 OpenGL context?如何在 2 个 OpenGL 上下文之间共享纹理?
【发布时间】:2011-07-26 14:09:17
【问题描述】:

我通过绘制离屏纹理(由离屏帧缓冲区创建)成功渲染了我的 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

【问题讨论】:

  • 任何人都有与sharegroup一起使用的示例代码?

标签: iphone opengl-es texture2d


【解决方案1】:

【讨论】:

  • 我尝试创建位于 context1 的同一共享组中的 context2,然后使用在 context1 中创建的纹理标识渲染 context2。但是当 context1 仍然正常渲染绘制时,我在 context2 中没有结果。两个上下文都在主线程中,我在渲染纹理之前绑定纹理,在每个上下文中渲染它之后调用 glFlush。
  • 你确定要调用 [EAGLContext setCurrentContext:context];在每个上下文中渲染之前。
  • 我很确定。我所做的是子类化来自苹果的当前 EAGLView 示例,并在调用纹理渲染代码之前调用 setFramebuffer(包括 setContext)。是否有任何调试方法可以确保我可以在 context2 中访问 texture1?
  • 嘿,我用一个示例项目更新了我的问题。可以看看吗?
【解决方案2】:

我意识到您正在尝试共享纹理而我没有,但我提供了这个答案,因为您的症状似乎与我的相同......

在我的例子中,我在绑定纹理时也得到了一个 GL_INVALID_VALUE。事实证明,在为它创建纹理之前,我并没有切换到第二个上下文。因此,它们是在第一个上下文中创建的。我的渲染,但是 WAS 切换上下文,因此无法找到纹理。

【讨论】:

    猜你喜欢
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2013-06-03
    相关资源
    最近更新 更多