【问题标题】:Rendering a texture in another class' RenderBuffer/FrameBuffer in OpenGL ES 2.0 for iOS 5在 iOS 5 的 OpenGL ES 2.0 中渲染另一个类的 RenderBuffer/FrameBuffer 中的纹理
【发布时间】:2012-05-16 12:10:32
【问题描述】:

我有两个 UIView,每个都有自己独立的 renderBuffers 和 frameBuffers。它们属于不同的 ViewController。我已经通过 NSNotificationCenter 连接了它们,所以一切就绪。

我只需要将ClassAView的frameBuffer中的纹理基本渲染到ClassBView的frameBuffer中即可。这看起来应该很容易......我尝试传入我在 ClassAView 中绑定的纹理:

glBindTexture(GL_TEXTURE_2D, myClassATexture);

然后说,点击屏幕,我尝试将纹理传递给 ClassBView:


// in ClassA:
[classBView addTexture:myClassATexture];

// In ClassB's addTexture method:
myClassBTexture = newTexture
glClear, glBindTexture, etc...
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
[self presentFramebuffer];

但它会导致黑屏。我尝试 NSLog myClassATexture 但它打印出“0”。

无论如何,我将如何有效地将 ClassA 中已经渲染的纹理传递给 ClassB?

我的目标是 iOS 5.0,所以如果有一种需要 iOS 5 的简单方法,我会全力以赴。 :)

非常感谢!

【问题讨论】:

  • 你正在尝试的应该工作。问题是纹理 ID 为 0。这基本上意味着没有纹理。
  • 啊哈,所以它可能在渲染后失效了?我显然是opengl的新手。 :)
  • 哈哈,后来我无意中在代码中使其无效,实际上将其设置为 0。哎呀!我把它拿出来了,它起作用了!太棒了。

标签: iphone ios opengl-es textures texture2d


【解决方案1】:

纹理 ID 为 0 表示没有纹理,因此您需要确保正确复制纹理 ID 以供以后使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-15
    • 2012-01-16
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    相关资源
    最近更新 更多