5

私は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テストは非常にうまく機能し流動的です。

私は完全に迷子になっています!なぜこれがパフォーマンスに異なるのですか?私が間違っているのは何ですか?

いくつかの追加情報:

  1. そのチュートリアルのすべての手順に従います。
  2. GL10(OpenGL 1.0)を使用しています。
  3. シェーダーはありません。
  4. 失われたFPSのデルタタイムはありません(これで問題が解決するとは思いません)。
  5. ネイティブコードはなく、Javaだけです。
  6. FPSを制御するためのSystemClock.uptimemillis()およびsleep()。
  7. MediaPlayerで1つのMIDI曲を再生します(これ以上音は出ません)。
  8. アルファが多いテクスチャ(2Dゲーム、スプライトに必要)。
  9. minSDKversion = 8

さらに詳しい情報が必要な場合は、教えてください。

4

2 に答える 2

0

RAMがボト​​ルネックになっている可能性があります。Android が画像をうまく処理できないことはご存知でしょう。ビットマップをリサイクルしていますか? OpenGL ES 2.0 を使用しないのはなぜですか? 私は、Samsung Galaxy Ace と LG p500 (両方とも Gingerbread を使用) で問題なくゲームとテストを開発しています。私はほぼ50 FPSを得ることができます。

于 2013-02-01T17:26:44.370 に答える
0
  1. UI スレッドでは絶対に使用Thread.sleepしないでください。非常に悪いことです。

  2. 使用しstaticsます。これは悪い OOP プラクティスですが、ここでは役に立ちます。

  3. 使用するvertex-buffer objects

  4. ここでも場所 ( )を初期化しonSurfaceChangedて取得します。glget***location

  5. the touch drivers fire way too many eventsFroyo ではガベージ コレクターが悪く、Gingerbread では(Google I_O 2011_ Android アプリのメモリ管理) 、常にあなたのせいではありません。そのため、Android のモーション センサーや位置センサーなどのタッチを使用しない、アプリやゲームの他の入力方法に徐々に切り替えてください。

于 2013-02-02T19:28:41.357 に答える