Ios 使用GLKTextureLoader加载纹理似乎浪费了CPU内存?

Ios 使用GLKTextureLoader加载纹理似乎浪费了CPU内存?,ios,opengl-es,memory-leaks,Ios,Opengl Es,Memory Leaks,在我们的游戏应用程序中,使用没有预乘alpha的纹理非常重要。因此,对于加载纹理,正如Apple指南中建议的那样,我们使用GLKTextureLoader 方法1: ... GLKTextureInfo* pTextureInfo = [GLKTextureLoader textureWithContentsOfFile:pPath options:pTextureOptions error:&pError]; ... ... uint8_t* pixelData = loadImag

在我们的游戏应用程序中,使用没有预乘alpha的纹理非常重要。因此,对于加载纹理,正如Apple指南中建议的那样,我们使用
GLKTextureLoader

方法1:

...
GLKTextureInfo* pTextureInfo = [GLKTextureLoader textureWithContentsOfFile:pPath options:pTextureOptions error:&pError];
...
...
uint8_t* pixelData = loadImageDataWithUIImageAndCoreGraphics(…);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixelData);
delete[] pixelData;
...
在选项中,我们可以关闭预乘alpha,一切正常,但似乎存在巨大的内存问题

相比之下,我们可以使用UIImage和CoreGraphics加载纹理,但预乘alpha问题仍然存在。这里的好处是,我们有更多的控制,通过
glTexImage2D(…):

方法2:

...
GLKTextureInfo* pTextureInfo = [GLKTextureLoader textureWithContentsOfFile:pPath options:pTextureOptions error:&pError];
...
...
uint8_t* pixelData = loadImageDataWithUIImageAndCoreGraphics(…);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixelData);
delete[] pixelData;
...
当使用方法1加载纹理时,Xcode显示80MB的内存消耗,而使用方法2我们的内存消耗仅为55MB。如果我们现在不删除像素数据(删除方法2中的“delete[]pixelData”行)而造成内存泄漏,那么内存消耗也将减少约80MB

因此,似乎
GLTextureLoader
在将图像/像素数据传递到GPU后不会从CPU内存中释放图像/像素数据。为什么不呢?有没有办法手动完成?如何避免这种巨大的额外(和不必要的)内存消耗

感谢您的帮助。提前谢谢