私はOpenGL1.0を使用してAndroid用のビデオゲームで働いています。
私はこのチュートリアルに従いました: http ://www.javacodegeeks.com/2011/06/android-game-development-tutorials.html
現在のモバイルであるHTCSensation(Android 4.0.3 Ice Cream Sandwich)で、非常にうまく機能し、流動的(30 FPSに制限)の小さなデモを作成しました。
また、友達の携帯電話でゲームをテストしたところ、次の結果が得られました。
- Galaxy S2 =完璧です!(30FPS)
- Galaxy Note =完璧です!(30FPS)
- HTC One S =完璧です!(30FPS)
- Sony Xperia Tipo =完璧です!(30FPS)
- Samsung Galaxy AceGT-S5830=非常に悪いパフォーマンス>_<'(<10FPS、2台の携帯電話でテスト済み)
XperiaTipoとSamsungAceのスペックを比較すると、ほぼ同じモバイルであることがわかります。
XPERIA TIPO:
- 320x480の解像度
- 512MBのRAM
- Qualcomm MSM7227A 800MHz、GPU Adreno 200
サムソンギャラクシーエース:
- 320x480の解像度
- 278MBのRAM
- Qualcomm MSM7227 800 MHz、GPU Adreno 200
OK、RAMは異なりますが、私のゲームは非常にシンプルで、200MB以上を消費しません!しかし、パフォーマンスはまったく異なります。も意味ない!
しかし...1つだけ違います!Samsung GalaxyAceはAndroid2.3.X(Gingerbread)を使用し、XperiaTipoはAndroid4.0.3(ICS)を使用します。
だから、私の槍の頭は、問題がAndroid2.3.Xにあることをターゲットにしています-GingerbreadまたはGalaxyAceはゴミ箱の携帯電話です。
しかし...私は友人にAndEngineの例をインストールしてテストするように強制しました。その結果、NexusParticleSystemテストは非常にうまく機能し流動的です。
私は完全に迷子になっています!なぜこれがパフォーマンスに異なるのですか?私が間違っているのは何ですか?
いくつかの追加情報:
- そのチュートリアルのすべての手順に従います。
- GL10(OpenGL 1.0)を使用しています。
- シェーダーはありません。
- 失われたFPSのデルタタイムはありません(これで問題が解決するとは思いません)。
- ネイティブコードはなく、Javaだけです。
- FPSを制御するためのSystemClock.uptimemillis()およびsleep()。
- MediaPlayerで1つのMIDI曲を再生します(これ以上音は出ません)。
- アルファが多いテクスチャ(2Dゲーム、スプライトに必要)。
- minSDKversion = 8
さらに詳しい情報が必要な場合は、教えてください。