5

我正在使用 opengl 和 cocos2d 端口(http://code.google.com/p/cocos2d-android-1)创建一个 android 游戏。我的目标是广泛的设备,并希望确保它运行良好。我只在nexus 上进行测试,希望能从有较慢设备经验的人那里获得一些意见。

目前该游戏使用两个 1024x1024 纹理以及两个 256x256 纹理。这在大多数设备的限制范围内吗?在这些情况下,任何人都对图形内存限制有任何经验或经验吗?如果超出 gfx 内存,它会分页到普通内存吗?

4

3 回答 3

11

Java 应用程序是 16Mo (mdpi) 或 24Mo (hdpi)。但是 Native 不是,OpenGL Java API 只是一个 JNI 包装器。所以你可以在 GPU 上加载超过 24Mo 的纹理。我的经验是起初将 Atlas 限制在 512*512(因为 G1 在大纹理上速度很慢),但今天我使用更大的 atlas 纹理。

我们当前的游戏使用 20-50 Mo 的内存并使用 2048*2048 纹理。

于 2010-12-28T05:55:59.160 回答
1

我知道旧帖子,但现在你在虚拟机中使用 android java 在内存中的位图上使用至少 128mb 的可用加载空间。

使用您在应用程序空间之外加载的纹理 (c)。所以加载限制与手机内存相同。(您会注意到在返回主屏幕时图标绘制的内存密集型游戏)

于 2015-01-07T03:14:27.710 回答
0

Afaik 纹理的内存限制与您的应用程序的内存限制相同,我相信在大多数情况下为 16 兆,尽管它可能是所有可用的手机内存都可以访问。

在我遇到问题之前,我已经在我的应用程序中加载了更多的东西,至少一个 2048x2048 纹理和几个 512x512 纹理,所有 8888 都在内存中。

我从来没有在纹理绑定上遇到过 oom 错误,只是在加载位图时,所以我希望这会有所帮助。

于 2010-12-21T01:56:55.097 回答