OpenGLとCUDAを使用してポイントクラウドを実装しようとしています。ポイントの半径は、関連するデータに基づいて、時間の経過とともにサイズが変化します。
私はOpenGLとCUDAにまったく慣れていないので、この目標を達成するのにかなり苦労しています。OpenGL、GLSL、およびCUDAの基本を学んだ後、プログラムのどの部分をどのように達成する必要があるかについて完全に混乱しています。
私の考えは次のとおりでした:
- 頂点位置でVBOを使用する
- 頂点半径のあるVBOを使用する
- 頂点が不確実なVBOを使用します。このデータに基づいて、頂点の半径はアニメーションで変化します。
- フレームごとにCUDAカーネルのすべての頂点の半径を計算します
- glDrawArraysを呼び出してすべてのポイントをレンダリングし、頂点シェーダーを使用します。これにより、配列からすべてのデータが入力として取得されます。
まず第一に...この目的のためにCUDAシェーダーとGLSLシェーダーを一緒に使用することは合理的ですか?どちらか一方を使用することについていくつか読んだので、それについてはよくわかりません。
2番目の質問は、プログラムのどの部分がCPUで実行され、どの部分がGPUで実行されるかということです。カーネルでデータを計算し、それをOpenGL表示関数に戻してレンダリングするのは理にかなっていますか?