web-dev-qa-db-ja.com

Android:2D。 OpenGlまたはAndroid.graphics?

私は友人と最初のAndroidゲーム。基本的なアイデアは、ゲームのすべてのフレームが表面全体(2つの大きなビットマップ)を2ステップで再描画することです。

  1. 静的画像(PNG)を含む背景は前のフレームを消去します
  2. 次に、大量の粒子が散らばって、せっけんの泡の効果を生み出します。そこでは、約20のビットマップのプールがランダムに選択され、すべての泡(200から300)がすべて異なるという錯覚を生み出します。各フレームでバブルの位置が更新され(約50ミリ秒)、バブルが動く効果が得られます。

数学エンジンはC(JNI)であり、現在、すべての描画はLunar Landerと非常によく似たAndroid.graphicsパッケージを使用して行われています(これは使用している例だったため)。動作しますが、アニメーションはややぎくしゃくしており、携帯電話の温度によって非常に忙しいと感じることができます。 OpenGLへの切り替えのメリットはありますか?そして、おまけの質問として、描画メカニズムを最適化する良い方法は何でしょうか(Lunar Lander様)、私たちは今持っていますか?

29
Bostone

OpenGL ESでの作業を開始しました。2Dグラフィックスにも使用します。この方法は最も柔軟で、非常に高速です( このサンプルコード を参照してください。2Dレンダリングについてであり、OpenGLのパワーを見ることができます。

始めるのは最も簡単なことではありませんが、良いチュートリアルがいくつかあります-例えば、 this はとても良いチュートリアルです。

6
Simon Heinen

毎回画面全体を再描画しないでください。それが低フレームレートの原因です。 invalidateメソッドを使用して、各フレームを変更した領域をマークします。

3
Tyler Mercer