2

Q1: 頂点配列を持つ 3D モデルがあります。各要素には x、y、z の値があります。これで、OpenGL でこの配列をレンダリングする動的 vbo バッファーを作成しました。問題は、フレームごとにすべての頂点を更新する必要があることです [これは、いくつかのロジックに依存します。しかし、それは単純な変換ではないことは確かです。つまり、すべての頂点に対して単一の変換マトリックスを使用して実行することはできません]。次に、フレームごとに vbo バッファーをマップし、データを更新してマップを解除し、レンダリングします。更新は for ループで行われます。今、私はそれを行うためのより速い方法があるのだろうかと思っていましたか?

ポイント: すべての頂点を更新する必要があります。それは私の要件です。頂点のサブセットを操作することはできません。

Q2: 頂点が更新されたため、法線を再計算する必要があります。滑らかなシェーディングのために、遅い頂点ですべての法線の結果を取得する必要があります。そうするより速い方法はありますか?基本的にスムーズなシェーディングのための法線の再計算が高速化されました。

私がすでに知っているいくつかのこと:

  1. 通常の計算を最適化するための SSE の使用。
  2. TBB または openMP を使用してループを並列化します。
4

1 に答える 1

1

TransformFeedbackはあなたが探しているものだと思います。

変換フィードバックを使用すると、実行時に頂点データを変更して別のレンダリングに使用できます。これらの操作はすべて、変換フィードバックを使用して頂点シェーダー内のGPU自体から実行できます。

また、Opengl3.0以降でサポートされています。

トランスフロムフィードバックの使用方法の簡単な例を次に示します

フィードバックバッファの使用に関する詳細は次のとおりです

于 2013-01-23T09:39:24.663 に答える