我正在使用 OpenGL 1.0 开发适用于 Android 的视频游戏。
我遵循了本教程: http ://www.javacodegeeks.com/2011/06/android-game-development-tutorials.html
我在当前的手机中创建了一个运行良好且流畅(限制为 30 FPS)的小演示:HTC Sensation(Android 4.0.3 Ice Cream Sandwich)。
此外,我在朋友的手机上测试了我的游戏,结果如下:
- Galaxy S2 = 完美!(30FPS)
- Galaxy Note = 完美!(30FPS)
- HTC One S = 完美!(30FPS)
- 索尼 Xperia Tipo = 完美!(30FPS)
- 三星 Galaxy Ace GT-S5830 = 性能非常差 >_<'(<10FPS 并在两部手机上测试)
如果您比较 Xperia Tipo 和 Samsung Ace 的规格,您会发现它们几乎是同一款手机。
XPERIA 提示:
- 320 x 480 分辨率
- 512MB 内存
- 高通 MSM7227A 800MHz,GPU Adreno 200
三星银河王牌:
- 320 x 480 分辨率
- 278MB 内存
- 高通 MSM7227 800 MHz,GPU Adreno 200
好吧,内存不一样,不过我的游戏很简单,不超过200MB!但表现完全不同。没道理!
然而……只有一件事不同!三星 Galaxy Ace 使用 Android 2.3.X (Gingerbread),而 Xperia Tipo 使用 Android 4.0.3 (ICS)。
所以,我的矛头指向问题出在 Android 2.3.X - Gingerbread 或 Galaxy Ace 是垃圾手机。
但是...我强迫我的朋友安装 AndEngine 示例并对其进行测试,结果 Nexus ParticleSystem 测试运行良好且流畅。
我完全迷路了!为什么这在性能上有所不同?我做错了什么?
一些额外的信息:
- 我遵循该教程中的所有步骤。
- 我使用 GL10 (OpenGL 1.0)。
- 没有着色器。
- 丢失 FPS 没有增量时间(我认为这件事不会解决我的问题)。
- 没有本机代码,只有 Java。
- SystemClock.uptimemillis() 和 sleep() 来控制 FPS。
- MediaPlayer 播放一首 MIDI 歌曲(不再有声音)。
- 具有大量 alpha 的纹理(2D 游戏,对于精灵来说是必需的)。
- minSDKversion=8
如果您需要更多信息,请告诉我。