首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CVOpenGLESTextureCacheCreateTextureFromImage reporting“无法创建IOSurface图像(纹理)”

CVOpenGLESTextureCacheCreateTextureFromImage reporting“无法创建IOSurface图像(纹理)”
EN

Stack Overflow用户
提问于 2012-01-03 16:42:35
回答 2查看 7.6K关注 0票数 3

有人能解释(或指出相关的FM覆盖)这个功能吗?

Xcode2,iOS 5.0.0,Xcode4.2,带ARC的项目。

我的项目从相机获取输入,并将其与各种图像混合,最终将其呈现在屏幕上。

只要我没有收到内存警告,它就可以无限期地工作,不会有内存泄漏。

在纹理之后,前5次调用此函数都会失败,并显示“无法创建纹理图像( didReceiveMemoryWarning )”。在那之后,屏幕变黑,程序停止响应。我可以按home键,然后关闭应用程序。

我的呼叫如下所示:

代码语言:javascript
复制
    err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, 
                                                   _videoTextureCache,
                                                   pixelBuffer,
                                                   NULL,
                                                   GL_TEXTURE_2D,
                                                   GL_RED_EXT,
                                                   _textureWidth,
                                                   _textureHeight,
                                                   GL_RED_EXT,
                                                   GL_UNSIGNED_BYTE,
                                                   0,
                                                   &_lumaTexture);

_videoTextureCache最初是用以下代码创建的:

代码语言:javascript
复制
    //-- 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的定义如下:

代码语言:javascript
复制
CVOpenGLESTextureCacheRef _videoTextureCache;    

当我收到内存警告时,我需要调用一些东西来释放分配的内存吗?我可以nil _videoTextureCache (以便ARC可以清理内存),然后重新创建它吗?

到目前为止,我找到的唯一文档是声明函数的.h中的注释,这似乎没有真正的帮助。

有没有人知道其他文档?

-Ken

EN

回答 2

Stack Overflow用户

发布于 2012-01-11 10:48:45

当你不再需要你的CVOpenGLESTextureCacheRefCVOpenGLESTextureRef时,你会调用CFRelease()吗?

Apple源代码:

  • GLCameraRipple
  • RosyWriter
票数 3
EN

Stack Overflow用户

发布于 2015-07-16 01:41:19

我不想重复一个老问题,但我已经花了几天的时间试图弄清楚同样的问题(尽管是在ios 8.4上),并在谷歌搜索时不断遇到这个问题。

我终于明白了,至少对我来说,internalFormat应该是GL_RGBA。我使用GL_BGRA是很愚蠢的,因为这是IOS使用的内部格式,我将我的视频解码为BGRA,文档上说“这就是如何解码GL_BGRA”,但后来我意识到他们在文档/标题注释中使用了GL_RGBA。

像素格式与GL_RGBA或GL_BGRA一样好用(只是颜色适当翻转)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8709730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档