如何在不超过VM内存预算的情况下在游戏中使用大量位图?

时间:2011-02-27 22:13:38

标签: android animation bitmap

在我的游戏中,我有12种不同的动画,每个动画由10个位图组成,每个位图为200x150像素。每次用户触摸屏幕(虚拟游戏手柄)时,都会播放其中一个动画。通常这是一个容易的工作,但性能明智,我遇到了麻烦。由于VM内存预算问题,从游戏开始时加载阵列上的所有位图导致崩溃游戏。它似乎 我的另一个选择是每次我需要时重新创建位图,然后重新编写它们,但这可能会因为创建时间和垃圾收集而导致滞后。我想不出第三种选择,所以我问你。是否有任何内存有效而不是滞后选项?

2 个答案:

答案 0 :(得分:1)

对于你的动画而言,这是14MB的内存,对于VM堆而言,它应该很适合显卡内存。我假设您正在使用OpenGL(如果不是,您将几乎不得不)。在这种情况下,您可以逐个构建框架,将它们绑定到纹理并从VM的记忆中释放它们。这将是相当快的,但如果滞后大于1/2秒左右,我不会经常这样做或提供某种加载功能。

答案 1 :(得分:-1)

我会考虑使用SpriteSheet。 SpriteSheet将在一个位图上包含动画的所有帧,然后您可以以编程方式加载正确的帧坐标来创建动画。