在没有应用程序崩溃的情况下,可以在iphone的openGL中加载多少1024*1024个png?

Jos*_*el. 1 opengl iphone textures

大约是什么是1024x1024 32位.pngs的最大数量,可以在iphone中同时加载openGL?,没有应用程序崩溃的风险.

和.pvr?更高的数字?

如果我在游戏中需要大量的纹理,那么保持加载和调用dealloc以保持所有纹理的内存不会过载是健康的吗?

Ben*_*n S 5

您应该根据需要加载纹理,并在应用程序收到内存不足警告时卸载未使用的纹理.

为了回答你的最大内存问题,似乎iPhone 2G/3G在20 MB标记附近发出内存警告,iPhone 3GS开始发出大约128 MB的警告.

1024 * 1024 * 32 bits = 4 MB
Run Code Online (Sandbox Code Playgroud)

所以在你收到警告之前加载了大约5个纹理.对于纹理来说,1024 x 1024是非常大的(它是AFAIK中最大的),所以如果可能的话,你应该减小它们的大小.

注意:我的警告阈值不是官方的,它们只是来自经验和stackoverflow上的其他问题.

  • 正如Ben在此提到的那样,您最好的选择是根据需要加载和卸载.管理记忆!:) (3认同)

And*_*nck 5

PVRTC可以使用每个纹素2或4位,这是一个巨大的节省.不可能给出可安全使用的纹理内存量的特定数字.苹果真的放弃了这个,看看这篇和Noel Lopis的这篇文章.

还要记住,如果你使用mipmap,它需要多33%的内存(每个mipmap是以上级别的1/4 => 1 + 1/4 + 1/16 ......〜= 1.33).

编辑:PVRTC如果你想要保留一个非常独特的alpha蒙版,那么另外一个注释效果不佳.