我正在使用opengl和cocos2d端口创建一个Android游戏(http://code.google.com/p/cocos2d-android-1)。我的目标是广泛的设备,并希望确保它表现良好。我只测试了一个nexus,我希望得到一些有慢速设备经验的人的意见。
目前游戏使用两个1024x1024纹理以及两个256x256纹理。这是否在大多数设备的限制范围内?在这些情况下,任何人都有任何经验法则或图形内存限制经验吗?如果超出gfx内存,它是否会翻页到正常内存?
答案 0 :(得分:9)
Java Apps是16Mo(mdpi)或24Mo(hdpi)。但Native不是,OpenGL Java API只是一个JNI包装器。所以你可以在GPU上加载超过24Mo的纹理。我的经验是首先将Atlas限制在512 * 512(因为G1在大纹理上很慢)但是今天我使用更大的地图集纹理。
我们目前的游戏使用20-50 Mo的ram并使用2048 * 2048纹理。
答案 1 :(得分:1)
Afaik内存限制纹理与你的应用程序的内存限制相同,在大多数情况下我认为是16兆,尽管它可能是所有可用的手机内存。
在遇到问题之前,我已经将更多内容加载到我的应用程序中,至少有一个2048x2048纹理和几个512x512纹理,所有8888都在内存中。
我从来没有在纹理绑定上出现oom错误,只是在加载位图时,所以我希望有所帮助。
答案 2 :(得分:1)
旧帖子我知道但是现在你在虚拟机中至少使用android java来讨论内存中Bitmaps上的可用加载空间。
使用纹理,您将加载到应用程序空间(c)之外。因此加载限制与手机内存相同。 (你会注意到在返回主屏幕时图标绘制的内存密集型游戏)