7

私は使ってみました

floatbuffer.put(float[]);

しかし、フレームごとに更新される異なるテクスチャ座標を持つ 200 を超える正方形を処理しているため、fps が大幅に低下し、ゲームが流動的になりすぎます。

badlogicgames.com で言及されている方法については、代わりに floatbuffer を使用し、intbuffer を使用すると思いましたが、同じことであり、バッファのメソッド「put」の時点で遅いのと同じです。

では、すべての floatbuffer を最高のパフォーマンスで更新するにはどうすればよいでしょうか?

編集:私は問題を解決しました。「put」メソッド自体は遅くありません。問題は、floatbufferごとに新しいfloatが初期化されるときです。代わりに、floatarrayに含まれる各要素の値を変更するだけです。多くのGCアクティビティを回避します..まあ、私は思います。

4

1 に答える 1

1

パフォーマンスを向上させる方法はいくつかあります。簡単に言えば、ここにいくつかあります:

1) floatbuffer を初期化し、各フレームごとに変換を適用します。このメソッドでは、floatbuffer を 1 回埋めて、ターンごとに変換を更新するだけです。

2) floatbuffer に一意の形状のみを配置する- 正方形のいずれかが互いに重複している場合は、メモリを節約するために各フレームで同じバッファーを呼び出します。

3) 頂点バッファー オブジェクトとインデックス バッファー オブジェクトを使用する- これを行ったように聞こえますが、データを頂点バッファーに格納し、配列のインデックスを使用して頂点を呼び出します。

それでも問題が解決しない場合は、次のチュートリアルをご覧になることをお勧めします: http://www.learnopengles.com/android-lesson-one-getting-started/

于 2012-09-28T02:17:20.463 に答える