对于 iOS 开发新手,尤其是 iOS 5 上的新 OpenGL 相关功能,如果我的问题非常基本,我深表歉意。
我正在开发的应用程序旨在接收相机帧并通过 OpenGL ES 将它们显示在屏幕上(图形人员将接管此操作并添加我知之甚少的实际 OpenGL 绘图)。该应用程序是用 XCode4 开发的,目标是运行 iOS 5 的 iPhone4。目前,我使用了 ARC 和 GLKit 功能,除了将图像加载为纹理时出现内存泄漏之外,一切都工作正常。该应用程序很快就会收到“内存警告”。
具体来说,我想问一下如何释放分配的纹理
@property(retain) GLKTextureInfo *texture;
-(void)setTextureCGImage:(CGImageRef)image
{
NSError *error;
self.texture = [GLKTextureLoader textureWithCGImage:image options:nil error:&error];
if (error)
{
NSLog(@"Error loading texture from image: %@",error);
}
}
The image
是由相机框架构建的石英图像(来自苹果的示例代码)。我知道问题不在代码的那部分,因为如果我禁用分配,应用程序不会收到警告。
我相信超级黑客解决方案,但它似乎有效:
在分配之前添加以下内容:
GLuint name = self.texture.name;
glDeleteTextures(1, &name);
如果有更官方的方式(或者如果这是官方方式),如果有人能让我知道,我将不胜感激。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)