CVOpenGLESTextureCacheCreateTextureFromImage错误

时间:2015-06-24 19:13:51

标签: ios xcode ios7 ios8

我正在开发应用第二版更新。一切都很好,但突然间我开始收到这个错误。我正在使用GPUImage库进行过滤。我在iPhone 6 / iOS 8.3上测试我的应用程序。我也检查了我的旧代码,但我开始得到同样的错误。有人帮我解决了这个问题。

Error in GPUImageFrameBuffer

3 个答案:

答案 0 :(得分:2)

我们有一些调用CVPixelBufferCreate的代码传递了错误的参数。 AFAIK来自一些示例代码,有一些不好的副本和粘贴之后,所以也许你的错误也一样。

CVPixelBufferCreate采用属性字典。一些键,如kCVPixelBufferOpenGLESCompatibilityKey采用CFBoolean,但我们传递的是字典。这种风格有效:

NSDictionary *attrs = @{ (NSString*)kCVPixelBufferIOSurfacePropertiesKey : @{},
                         (NSString*)kCVPixelBufferOpenGLESCompatibilityKey: @YES}; <-- we had @{} !

err = CVPixelBufferCreate(kCFAllocatorDefault, width, height, formatType, (__bridge CFDictionaryRef)attrs, &pixelBuffer);

答案 1 :(得分:0)

我正在使用GPUImage 1.6.0并看到同样的问题。试图破解建议的提案 - 但它没有帮助。还有其他想法/建议吗?

CFDictionarySetValue(attrs, kCVPixelBufferIOSurfacePropertiesKey, empty);
CFDictionarySetValue(attrs, kCVPixelBufferOpenGLESCompatibilityKey, kCFBooleanTrue);

CVReturn err = CVPixelBufferCreate(kCFAllocatorDefault, (int)_size.width, (int)_size.height, kCVPixelFormatType_32BGRA, attrs, &renderTarget);

答案 2 :(得分:0)

我从Brad Larsen那里得到了这个解决方案,我认为他是对的。 “如果您正在直接从相机进行过滤,请不要使用-imageByFilteringImage:和中间UIImages。这在内存消耗和性能方面都非常昂贵,因为您必须在CPU上转换为UIImages。 ,来自GPUImageVideoCamera实例的链过滤器。“