【问题标题】:Creating an RGB CVOpenGLESTexture in iOS在 iOS 中创建 RGB CVOpenGLESTexture
【发布时间】:2015-01-23 15:11:08
【问题描述】:

我正在尝试在 iOS 中创建一个 3 通道 CVOpenGLESTexture

通过在CVPixelBufferCreate()GL_LUMINANCE 中为formatinternalFormatCVOpenGLESTextureCacheCreateTextureFromImage() 中指定kCVPixelFormatType_OneComponent8,我可以成功创建单通道纹理。

同样,我可以通过在CVPixelBufferCreate()GL_RGBA 中为formatinternalFormatCVOpenGLESTextureCacheCreateTextureFromImage() 中指定kCVPixelFormatType_32BGRA 来成功创建4 通道 RGBA 纹理。

我需要创建具有可访问像素的 3 通道、24 位、RGB(或 BGR)纹理。
我似乎找不到CVPixelBufferCreate()CVOpenGLESTextureCacheCreateTextureFromImage() 的正确参数(或其组合),不会导致它们中的任何一个失败。

其他信息
我的设备上支持的 FOURCC 格式类型 reported by CVPixelFormatDescriptionArrayCreateWithAllPixelFormatTypes()
32, 24, 16, L565, 5551, L555, 2vuy, 2vuf, yuvs, yuvf, 40, L008, L010, 2C08, r408, v40853, , y416, BGRA, b64a, b48r, b32a, b16g, R10k, v308, v216, @9876543655, @987654365 @,r4fl,grb4,rgg4,bgg4,gbr4,420v,420f,411v,411f,422f,422v,422v,@987654377 444fy420f420a2vyL00hL00f2C0h2C0fRGhARGfAw30rw40aw40m, x420, x422, x444, x44p, xf20, xf22, xf44, xf4p, x22p, b3a8, @9876.

有趣的是,其中一些值没有在 CVPixelBuffer.h 中定义。

当我将kCVPixelFormatType_24RGB (24 == 0x18) 传递给CVPixelBufferCreate() 时,它会成功,但随后CVOpenGLESTextureCacheCreateTextureFromImage() 会以error code -6683:kCVReturnPixelBufferNotOpenGLCompatible 失败。

【问题讨论】:

    标签: ios textures opengl-es-2.0 core-video


    【解决方案1】:

    回答我自己,虽然我很高兴被证明是错误的并展示了如何做到这一点。

    正如我向here 展示的那样(再次回答我自己),可以列出设备上支持的所有fourCC 缓冲区格式,以及与每种这样的fourCC 格式相关的一系列格式属性。

    与此问题相关的标志是:

    • kCVPixelFormatOpenGLESCompatibility
    • kCVPixelFormatContainsAlpha :应该是假的;
    • kCVPixelFormatContainsRGB :注意:仅从 __IPHONE_8_0 支持,但不是绝对必要的;
    • 使用调试器,我发现了另一个有用的键:CFSTR("IOSurfaceOpenGLESTextureCompatibility"),它将验证 OpenGL ES 纹理是否支持直接像素访问,而不需要(较慢的)glReadPixels()glTexImage2D()

    不幸的是,使用这些标志,目前似乎没有这样的 RGB/BGR 支持格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多