【问题标题】:GL_EXT_texture_format_BGRA8888 says BGRA is cool, so what's the deal?GL_EXT_texture_format_BGRA8888 说 BGRA 很酷,那有什么关系呢?
【发布时间】:2011-02-25 02:03:16
【问题描述】:

这是对没有回应的问题的另一种看法。 iPhone 的扩展名为 GL_EXT_texture_format_BGRA8888,它应该允许我使用 BGRA 作为 glTexImage2d 的内部格式。

我只有 BGRA 数据,因为这是我可以从相机中获得的唯一数据(除了 YUV,我还没有准备好处理)。

如何将 BGRA 与 glReadPixels 一起使用?我尝试的任何操作都会给我一个黑屏!

【问题讨论】:

    标签: iphone opengl-es camera avfoundation rgba


    【解决方案1】:

    您是否在创建和加载纹理后检查了 OpenGL 错误?

    你绑定纹理了吗?

    您是否启用了glEnable 的纹理映射?

    您是否为多边形的每个顶点指定了纹理坐标?

    【讨论】:

    • 错误,是的。绑定,是的。 glEnable,不。纹理,是的。我应该澄清一下,屏幕输出是正确的。我的问题在于 glReadPixels。如果我使用 RGBA 作为内部格式设置我的 FBO,我可以 glTexImage2d 一个 BGRA 帧。因此,由于我的设置,我可以很好地闪烁屏幕,但是使用 glReadPixels 将其设置为 BGRA 时会出现黑框,而 RGBA 会给我反转颜色(因为它实际上存储为 BGRA!)。
    • @akaru:您应该需要glEnable(GL_TEXTURE_2D) 或运行片段着色器。您是否在glReadPixels 之前调用了glFlush(),以确保在捕获之前进行渲染?与SwapBuffers 相关的glReadPixels 在哪里被调用? (或者任何它在 iPhone 上的名称,也许是glXSwapBuffers)。
    • @akaru:另外,你是想从屏幕上阅读还是从 FBO 阅读?
    • 我正在使用片段着色器来对屏幕进行 blit。我正在从 FBO 做 glReadPixels。我没有尝试过 glFlush(),我认为 glReadPixels 会强制刷新。至于 swapBuffers(),我不知道它在 iPhone 上可用。但是请注意,如果我对反转颜色感到满意,我可以让一切正常工作。只是我认为我应该能够保持 BGRA 无处不在,但不能。看到这个:stackoverflow.com/questions/5086863/…。顺便说一句,感谢您的帮助,您是唯一一个对我几天来一直在研究的问题发表意见的人!
    • @akaru:既然你有着色器能力,那么告诉opengl它是RGBA并使用着色器来调配组件怎么样?类似于out_Color.xyzw = in_Color.zyxw;
    【解决方案2】:

    根据OpenGL ES 2.0 specification,glReadPixels() 仅支持 RGBA 作为从您的 FBO 回读的格式。我相信您在此处引用的扩展名仅允许将 BGRA 像素格式数据提供给您的纹理,而不是您可以读回 BGRA 格式的 FBO。

    正如 Ben 所建议的,如果您需要最终结果为 BGRA,您可以在片段着色器中调整颜色组件。

    【讨论】:

    • 出于某种原因,我一直在查看非 ES 文档(其中支持 BGRA)。 BGRA(或 YUV)是唯一允许进出相机的格式(例如提供资产写入器)......它允许用于纹理,但不允许作为存储或从中读取。令人困惑!谢谢你清理它,布拉德。现在我想弄清楚如何将完整的 YpCbCr 4:2:0 帧传递给 opengl...
    • @akaru - 我也是。在 Mac 上,Apple 有一个扩展,可以让您使用 GL_YCBCR_422_APPLE 颜色格式来处理 YUV 4:2:2 纹理,但不幸的是,iPhone 上没有。
    • 我只能通过glTexImage2d'ing和RGBA得到第一个平面(灰度)。 GL_LUMINANCE 给了我一个错误,尽管文档说它是受支持的。叹息。
    • 我看到 opengl.org/registry/specs/APPLE/rgb_422.txt 支持 4:2:2 纹理,但不支持 4:2:0,你不觉得这很奇怪吗?
    • @akaru - 是的,我最近也看到了,但不太清楚它的用途。不过,他们添加它是有原因的,所以必须有一种方法来应用它。
    猜你喜欢
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多