【发布时间】:2015-07-16 01:41:19
【问题描述】:
谁能解释(或指出相关的 FM 覆盖)这个功能?
iPad 2、iOS 5.0.0、Xcode 4.2、ARC 项目。
我的项目从相机获取输入并将其与各种图像混合,最后将其全部渲染到屏幕上。
只要我没有收到内存警告,它就可以无限期地正常工作,不会出现内存泄漏。
在didReceiveMemoryWarning 之后,调用此函数的前 5 次失败,提示“无法创建 IOSurface 图像(纹理)”。之后,屏幕变黑,程序停止响应。我可以按 Home 键然后关闭应用程序。
我的电话是这样的:
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 中的 cmets,这似乎并没有帮助。
有人知道其他文档吗?
-肯
【问题讨论】:
标签: ios