【发布时间】:2015-01-23 15:11:08
【问题描述】:
我正在尝试在 iOS 中创建一个 3 通道 CVOpenGLESTexture。
通过在CVPixelBufferCreate() 和GL_LUMINANCE 中为format 和internalFormat 在CVOpenGLESTextureCacheCreateTextureFromImage() 中指定kCVPixelFormatType_OneComponent8,我可以成功创建单通道纹理。
同样,我可以通过在CVPixelBufferCreate() 和GL_RGBA 中为format 和internalFormat 在CVOpenGLESTextureCacheCreateTextureFromImage() 中指定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 444f,y420,f420,a2vy,L00h,L00f,2C0h,2C0f,RGhA,RGfA,w30r,w40a,w40m, 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