グラフィックプログラムに多数の頂点を入力できるようにしたいのですが、それらに対して次のことができるようにしたいと考えています。
- OpenGL のグラフィック部分、特に Vertex Shader で使用します。
- Compute Shader で物理計算を行います。
これらの要件により、頂点を格納し、それらに正しくアクセスできる構造が必要であることがわかりました。次のことを考えました。
- ArrayBuffers
- テクスチャ (テクスチャリング自体ではなく、情報を保存するため)
ただし、両方のバリアントの欠点を考えて思いつきました。
ArrayBuffer:
- コンピュート シェーダーがどのように頂点を変更するどころか、読み取ることができるかわかりません。それでも、私はそれらを描く方法を知っています。
テクスチャ:
- Compute Shaders でそれらを変更する方法は知っていますが、テクスチャから描画する方法がわかりません。より具体的には、描画する必要がある要素の数は、テクスチャに書き込まれた (ゼロではないデータ) 要素の数に依存します。
私のニーズを満たすいくつかの重要な他の機能を見落としている可能性があるため、実際の質問として
、GPU に存在し、頂点と計算シェーダーの両方でアクセスできる頂点を作成するにはどうすればよいですか?