为什么较小的NPOT OpenGL纹理比iOS设备上相应的POT纹理占用更多内存?

时间:2013-07-08 17:14:46

标签: ios memory memory-management opengl-es textures

我正在做一些关于在OpenGL ES 2.0 iOS设备上加载POT与NPOT纹理的测试。

令人惊讶的是,NPOT纹理(尺寸较小)似乎比下一个最大的POT纹理占用更多内存。任何人都可以解释原因吗?

我的测试包含一个简单的应用程序,其中我加载了一个非常大的纹理(我正在使用cocos2d,所以这可能是这个引擎中的一个错误)。然后我使用this method输出内存使用量。 (我正在寻找一种报告纹理记忆的更好方法,请参阅here)。

NPOT纹理为1010x1708(RGBA4444为3399 kB)。等效的POT纹理为1024 x 2048(RGBA4444为4096 kB)。

使用POT内存使用情况的应用程序使用稳定在略超过1600000字节(我做了三次运行,使用这些值:16261120,16232448和16240640)。 NPOT内存使用稳定在大约1900000字节(19173376,19038208和19140608)。在运行之间没有其他任何变化,只有纹理。

为什么,哦,为什么? : - )


注意:我在iOS 6.1上进行了这些测试({5}知道iOS 5,导致POT纹理的内存比NPOT纹理多33%。

0 个答案:

没有答案