2011-02-02 24 views
0

私はAndroid用の簡単なモデリングプログラムのコンセプトに取り組んでいます。私はちょっとした問題に遭遇しました。OpenGL ESポリゴンと頂点の情報を保存する

基本的に、私はJavaベクトルで頂点とポリゴンの情報を保持しています(私はそれらを操作するのにこの情報が必要ですが、描画する必要はありません)。

私はVBOを使用しています。

各ポリゴンには現在、作成された頂点のリストがあります。つまり、インデックス配列にデータが格納されると、各頂点にどのインデックスがあるかを調べる必要があり、頂点が作成または削除されるとそれらのインデックスが変更される可能性があります。

私はJava VectorのindexOf(Vertex v)メソッドを使用してこれを素早くコーディングしましたが、明らかにこれは非常に遅く、これを管理する最善の方法が何であるか不思議です?

ありがとうございます。

答えて

0

まず、パフォーマンスを少し向上させる簡単な修正:VectorではなくArrayListを使用します。おそらく同期オーバーヘッドは必要ありません。

主な問題は、すべての頂点配列の変更時にインデックス配列全体を再計算することです。現在、頂点を削除すると、リスト内の削除された頂点のインデックスが変更されるため、これを行う必要があります。したがって、キーは頂点インデックスの変更を最小限に抑えることで、完全に再計算するのではなく、簡単にインデックス配列を維持することができます。 したがって、list.remove()を使用して頂点を削除する代わりに、リストの最後にある頂点に置き換えます。このように、変更されたインデックスは1つだけです。したがって、インデックス配列を繰り返し処理して新しい値を代入するのはすばやく簡単です。

+0

ありがとう、これは非常に役に立ちました。 – Joru

関連する問題