ここで以前にVBOに関するいくつかの質問を受けました。私が受け取ったコメントから、新しいアプローチが必要であると判断しました。CUDAを使用したOpenGLの高さマップペイントVBO
簡単に言えば、大型FLOAT配列で定義されたMandelbrotセットを描画しようとしています。約512X512ポイントです。私のプログラムの目的は、ズームと世界の方向を制御できるようにすることです(3Dモデルです)。 これまで、GL_TRIANGLE_STRIPを使用して全体をペイントしましたが、これは遅いペインティングプロセスのために悪い選択になりました。また、私のペインティングスタイル(glVertexを呼び出す順序)を実装することがVBOのコーディングに不可能になったためです。
私はいくつか質問があります。
この説明の後でさえ、私はVBOが最良の選択であるかどうかはわかりません。なぜなら、ユーザーが計算を制御するためです。彼がプログラムによって引き起こす計算ごとに、私はマンデルブロセットを再計算する必要があります)、ポイントをバッファに再コピーする:時間がかかるプロセス(?ms)。
このプログラムでは、ユーザーは世界中で移動することができますので、ここでは計算が行われないため、ここではVBOが最適です。
1.what(配列内の各セルは高さのみを保持している場合)
2.howを高さマップをペイントするための最良の方法は、私はVBOでそれを適用することができますし、CUDA(cudaRegisterBufferまたはそのような何かにそれを転送します)
3.isはモードを区別し、VBOが必要なとき(計算モードなし)とそうでないとき(計算モード)を決定する方法です。あなたは CUDA配列をバインド場合
'glBegin/glEnd'では、GPUごとにデータ全体を各フレームにコピーしていますが、この場合、個々の頂点ごとに重いシステムコールがあります。だから、VBOは常に正しい方法です。計算がCUDAによって行われる場合は、VBOデータをCPUにコピーする必要はまったくありません。 –