2009-05-20 8 views
1

私はこれを読んで描画を最適化しました。同じテクスチャを使って1回のパスで図を描画できます。
しかし、どのように私はglVertexPointerに送信する単一の図形を形成するために一緒に私のシングルスクエアを接続します。単一のglVertexPointerで同じ正方形をバッチする方法

- あなたはインデックスを使用するように(PowerVR MBX.3D Application Development Recommendations.1.0.67aで読むページ5)

+0

あなたの質問はもう少し正確になりますか?クワッドストリップを描くつもりですか?あなたは何を達成しようとしていますか? – ralphtheninja

+0

pdfをチェックすると、何を意味するのかがわかります。 テクスチャを使った四角形があり、それを何度も複製したい場合は、すべての四角形が接続された大きな図形を作成することについて話し合ってください(少なくともそれが私の理解の仕方です)。 – CiNN

答えて

0

が見えますか? glDrawElementsを参照してください。

1

私は「ソフトウェア変換」のステップを熟考しています。私は、ある正方形の頂点配列を持っていると仮定し、その配列のインスタンスのいくつかをあなたの四角形のすべての頂点を含む1つの大きな配列に連結し、最後に大きな配列を描画したいとします。

この場合の大きな配列には、事前変換された頂点データが格納され、その後、1回の描画呼び出しでGPUに送信されます。あなたが描画する正方形の数が分かっているので、それらのN個を言う。その配列は、N * 4 * 3要素を含むことができなければなりません(3Dで作業しているので、頂点ごとに3つの座標があると仮定します)。

ソフトウェア変換ステップでは、すべての四角形を繰り返し、変換されたデータを大きな配列に追加します。次に、glVertexPointer()を呼び出して描画できます。

しかし、私はこのソフトウェア変換ステップに少し懐疑的です。これは、これらすべての変換を自分で処理することを意味します。つまり、GPUのパワーを使用していません。つまり、変換された座標を得るためにGPUのパワーではなくCPUのパワーを使用します。個人的には、まずテクスチャアトラスを作成してから、各1つの正方形のすべてのテクスチャ座標を生成します。テクスチャの座標は変化しないので、これは一度だけ必要です。

はい、これは何である:あなたの正方形を描き始める前に、あなたはその後、(私は行列などをポップ、クワッドを描画し、プッシュマトリックス)を編集

)テクスチャが glTextureCoordPointer(への呼び出しにより座標を使用することができますが欲しいです。あなたは確かに それはCPUで遅いですか?何から 彼らは 複数回glVertexPointerと glDrawArraysを呼び出すオーバーヘッドが遅くなると言う。

私は懐疑主義を取り戻しています! :)ちょうどそれの地獄のために、いくつかの対策をしないでくださいなぜですか?トレードオフは、少なくともあなたが全部多くのデータをシャッフルする必要があることでなければなりません。したがって、GPUがそのデータをすべて保持できない場合、通常の変換が必要になることがあります。

ああ、もう1つあります。バタフライが動くとすぐに、そのデータを手動で再変換する必要があります。これは、GPUにデータを変換させるときには必要ありません。そのため、インスタンスが汚れている場合には、各インスタンスにフラグを立て、drawコールを実行する前に再変換する必要があります。

+0

はい、これが私の望みです。あなたはそれがCPU上でより遅いと確信していますか? glVertexPointerとglDrawArraysを複数回呼び出すオーバーヘッドがより遅くなると言うことから、 – CiNN

+0

進捗状況はありますか?:) – ralphtheninja

+0

はまだそれに取り組む時間がありませんでした。 – CiNN

関連する問題