任何人都可以解释(或指出相关的FM覆盖)这个功能吗?CVOpenGLESTextureCacheCreateTextureFromImage报告“无法创建IOSurface图像(纹理)”
iPad 2,iOS 5.0.0,Xcode 4.2,ARC项目。
我的项目从相机获取输入并将其与各种图像混合,最后将其全部显示在屏幕上。
只要我没有收到内存警告,它可以无限期地工作,没有内存泄漏。
经过didReceiveMemoryWarning
之后,调用此功能的前5次,它失败,说“无法创建IOSurface
图像(纹理)”。之后,屏幕变黑,程序停止响应。我可以按主页键,然后杀死应用程序。
我的电话是这样的:
err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault,
_videoTextureCache,
pixelBuffer,
NULL,
GL_TEXTURE_2D,
GL_RED_EXT,
_textureWidth,
_textureHeight,
GL_RED_EXT,
GL_UNSIGNED_BYTE,
0,
&_lumaTexture);
_videoTextureCache
最初与此创建:
//-- Create CVOpenGLESTextureCacheRef for optimal CVImageBufferRef to GLES texture conversion.
CVReturn err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, NULL, (__bridge void *)_context, NULL, &_videoTextureCache);
if (err)
{
NSLog(@"Error at CVOpenGLESTextureCacheCreate %d", err);
return;
}
_videoTextureCache
的定义是这样的:
CVOpenGLESTextureCacheRef _videoTextureCache;
我需要调用的东西当我收到内存警告时释放分配的内存? 我可以nil
_videoTextureCache
(所以ARC可以清理内存),然后重新创建它?
到目前为止,我发现的唯一文档是.h
中声明函数的地方的注释,这似乎并没有帮助。
任何人都知道其他文档?
-Ken
这是相关的? https://开头github上。com/BradLarson/GPUImage/issues/220 – Abhinit 2012-10-10 16:28:57