-1

transform feedbackを使用してピッキング ルーチンを実装しようとしています。現在は正常に動作しますが、速度が非常に遅い (より遅いGL_SELECT) ことが問題です。

現在の仕組み:

  1. glBindBufferRange()オフセット (最初は 0)を使用して TBO をバインドします。
  2. glBufferSubData()(ピッキングが正しいことを確認するために)を使用してメモリ(TFの変数構造のサイズ)をリセットします。主な問題はここにあります。
  3. ピッキング レイとの交差をチェックするジオメトリ シェーダーでオブジェクトを描画します。交差が見つかった場合、シェーダーはこれを TF 変数に書き込みます (最初は交差がありません。手順 2 を参照してください)。
  4. オフセットを増やして、次のオブジェクトでステップ 1 に進みます。

最後に、各オブジェクトのピッキング データの配列を取得します。

glBufferSubData()問題は、各反復での呼び出しを回避する方法です。可能な解決策(ただし、それらを実装する方法はわかりません)は次のとおりです。

  • 変化する TF を 1 つだけ書き込みます。だから他人をリセットする必要はない
  • 他の方法でデータをリセットする

何か案は?

4

1 に答える 1