大约是什么是可以在iphone中同时加载openGL的1024x1024 32位.png的最大数量?,没有应用程序崩溃的风险。
和.pvr?更高的数字?
如果我在游戏中需要大量的纹理,那么保持加载和调用dealloc以保持所有纹理不会使内存过载是健康的吗?
答案 0 :(得分:5)
您应该根据需要加载纹理,并在应用程序收到内存不足警告时卸载未使用的纹理。
为了回答你的最大内存问题,似乎iPhone 2G / 3G在20 MB标记附近发出内存警告,iPhone 3GS开始发出大约128 MB的警告。
1024 * 1024 * 32 bits = 4 MB
所以在你收到警告之前加载了5个纹理。 1024 x 1024非常大(它是AFAIK中最大的一个)纹理,所以如果可能的话,你应该减小它们的大小。
注意:我的警告阈值不是正式的,它们只是来自经验和stackoverflow上的其他问题。
答案 1 :(得分:5)
PVRTC
可以与每个纹素的2位或4位一起使用,这是一个巨大的保存。不可能给出可安全使用的纹理内存量的特定数字。 Apple确实放弃了这一点,请参阅Noel Lopis的this和this篇文章。
还要记住,如果你使用的是mipmap,它需要多33%的内存(每个mipmap是以上级别的1/4 => 1 + 1/4 + 1/16 ...〜= 1.33)。 / p>
编辑:如果您想要保留一个非常独特的Alpha掩码,则另外一个音符PVRTC
无效。
答案 2 :(得分:2)
我希望当你说“并且调用dealloc”时你的意思是“并使用-release释放那些对象”,因为你自己永远不应该在任何对象上调用-dealloc。