私は OpenGL ES 2.0 について少し混乱しており、2D タイリングを処理するための正しい手順に関する信頼できる情報を見つけることができません (または、知っていて理解していなかったのかもしれません)。
簡単に言うと、私は現在、Canvas をベースにしたいくつかのゲームを持っています (実際、人々が言うほど悪くはありません。1 GHz の CPU で 30 ~ 40 の FPS が得られます)。パフォーマンスは素晴らしいですが、いくつかの新しいアイデアがあり、まばゆいばかりの特殊効果を表示するために必要なパフォーマンスを得るには、OpenGL が唯一の方法だと思います。
私は何千時間ものゲームエンジンを持っているので、避けられれば「テスト」するためだけに大きなアーキテクチャの変更を行うことに少し抵抗があります (特に私は OpenGL に慣れていないため、 1 か月かけて最高のパフォーマンスを得るのに費やす時間 (時間 = お金)。
テクスチャの切り替えは非常にコストがかかることを理解しています。また、テクスチャ領域を単一のテクスチャに保持するためのシステムがすでに用意されています。また、どのオブジェクトが画面上にあるかを追跡するので、シーンを表示するために必要な描画呼び出しのみが GPU に送信されます。
そのため、フレームごとに再描画する必要がある画面上に大量のタイル/タイルのレイヤーがあります。次のようにしたほうがよいでしょうか:
- レベル ファイルを解析し、各タイルを兄弟などにリンクされたポリゴン (クワッド) に変換し、読み込み時に UV マップを作成しますか? (これには、各タイルを Rectangle として格納することから、隣接するタイルのポイントを追跡してリンクできるようにするアーキテクチャの変更が必要になります)。
- 単一の QUAD を作成し、同じテクスチャを使用して同じパスでレンダリングできるタイルをレンダリングするように注意しながら、画面上ですべての位置に移動します。
- タイルごとに QUAD を作成し、各タイルで draw() メソッドを呼び出すだけです (テクスチャスワップを最小限に抑えるか、完全になくすようにします)。
画面上のオブジェクトを再配置するには、glTranslate を使用する必要がありますか (GPU に負担がかかることを理解しています)、または QUAD の座標を保持する FloatBuffer を更新する方がよいでしょうか?
ありがとうございます!