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

Toa*_*oad 8 iphone rendering opengl-es 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);
Run Code Online (Sandbox Code Playgroud)

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

rob*_*off 9

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

技术问答QA1501核心视频 - 可用的像素格式

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