谁能解释一下(或指出相关的 FM 覆盖)这个功能?
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 中的注释,这似乎并没有什么帮助。
有人知道其他文档吗?
-肯
最佳答案
您是否在不再需要 CVOpenGLESTextureCacheRef 和 CVOpenGLESTextureRef 时调用 CFRelease()?
苹果源代码:
关于ios - CVOpenGLESTextureCacheCreateTextureFromImage 报告 "Failed to create IOSurface image (texture)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8709730/