【问题标题】:opengles: how to copy existing fbo's colorattachment(renderbuffer) to another fbo's colorattachment(texture2D)opengles:如何将现有 fbo 的颜色附件(渲染缓冲区)复制到另一个 fbo 的颜色附件(纹理 2D)
【发布时间】:2013-09-16 14:03:16
【问题描述】:

平台是 iPhone OpenGL ES 2.0

框架已经创建了一个主fbo,它带有渲染缓冲区作为它的颜色附件。

我有自己的fbotexture2D 作为颜色附件。 我想将fbo 的主要内容复制到我的fbo。 我尝试了常见的glCopyTexImage2D 方式,但在我的设备(iPad1)上太慢了。 所以我想知道是否有更快的解决方案。

如果主 fbo 使用texture2D 作为颜色附件,我知道只需使用该纹理将全屏四边形绘制到我的 fbo,但是如何将它的渲染缓冲区绘制到我的 fbo? google了很久,没有具体答案。

【问题讨论】:

    标签: ios opengl-es framebuffer


    【解决方案1】:

    RenderBuffers 在大多数嵌入式系统上几乎没有用处。你所能做的就是用 glReadPixels() 从它们中读取,这太慢了。

    您应该使用纹理附件,如您所说,然后使用该纹理进行渲染。本文将有所帮助:

    http://processors.wiki.ti.com/index.php/Render_to_Texture_with_OpenGL_ES

    【讨论】:

    • 由于 iPad 使用基于 Tile 的延迟渲染 GPU (PowerVR SGX ...),这可能是最好的方法。让它为您平铺所有内容,并在延迟平铺中进行纹理提取,而不是单个内存复制操作。从帧缓冲区读取需要首先刷新所有延迟的命令,而如果您可以将其延迟为对 tile 友好的方法,您可能会获得更好的吞吐量。这在这里解释:developer.apple.com/library/ios/documentation/OpenGLES/…
    • @ClayMontgomery 主渲染缓冲区是由另一个框架(cocos2d-x 的 EGLView)创建的,我不应该修改它的进程。我只是想知道是否有像桌面opengl的glBlitFrameBuffer功能这样的方法
    • @AndonM.Coleman 正如我上面所说的,我无法更改现有的 renderBuffer 方法,但我会查看文章以获得一些想法,无论如何,tks
    • 绝对没有理由不能使用带纹理的四边形绘制到主帧缓冲区。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多