2

水面を構築しています。ここでは、波の効果を得るために正弦波の頂点をシフトしたいと考えています。OpenGLを選択する前の私の理解は、これはジオメトリシェーダーで行うのが最適であるということでした。

ただし、現在、私はOpenGL2.1のOpenGLES 2.0サブセットを使用しており、最新のプログラム可能なパイプラインを厳密に利用しています。このバージョンでは、ジオメトリシェーダーは使用できません。

私には3つの選択肢があります:

  • CPUですべての頂点の変更を行い、すべての水面のフレームごとにVBOをアップロードして、OpenGL2のみを使用します。
  • OpenGL 3.2に移動し、これにジオメトリシェーダーを使用します。
  • OpenGL 2をOpenCLと一緒に使用して頂点の変更を行い、OpenCLはコンテキストとしてGPUを使用してボトルネックを減らします。

主に物事をシンプルにしたいと思います。それで、私がOpenCLを(まだ)知らないことを考えると、おそらく私はCPUに大きなバッチを送ることに固執するべきですか?

4

1 に答える 1

7

頂点を移動するためにジオメトリシェーダーは必要ありません。ジオメトリシェーダーは、(テッセレーションのように)新しい頂点を作成する場合にのみ本当に必要です。既存の頂点を正弦波で置き換えたい場合は、頂点シェーダーで簡単に行うことができます。

于 2012-07-15T21:01:52.557 に答える