如何为iPhone创建一个32RGBA格式的CVPixelBuffer?

时间:2011-11-06 18:55:12

标签: iphone opengl-es rendering framebuffer

当尝试创建32位RGBA CVPixelBuffer时,我经常会出错。

最值得注意的是错误-6680,这意味着:“缓冲区不支持指定的像素格式。”

这是代码片段:(宽度和高度指定为256 * 256)

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
//                         [NSNumber numberWithBool:YES], kCVPixelBufferCGBitmapContextCompatibilityKey,
//                         [NSNumber numberWithBool:YES], kCVPixelBufferCGImageCompatibilityKey,
//                         [NSNumber numberWithBool:YES], kCVPixelBufferOpenGLCompatibilityKey,
                         nil];
CVPixelBufferRef pxbuffer = NULL;
CVReturn status = CVPixelBufferCreate(kCFAllocatorDefault, WIDTH,
                                      HEIGHT, kCVPixelFormatType_32RGBA, (CFDictionaryRef) options, 
                                      &pxbuffer);
NSParameterAssert(status == kCVReturnSuccess && pxbuffer != NULL);

任何人都可以暗示我做错了吗?

1 个答案:

答案 0 :(得分:7)

您需要使用不同的像素格式。仅仅因为有一个为32RGBA定义的常量并不意味着它被支持。本技术说明列出了支持的格式(截至编写时)以及可用于查找当前支持的格式的功能:

Technical Q&A QA1501 Core Video - Available Pixel Formats

支持的最相似的格式是32ARGB和32BGRA。