OpenGL の頂点配列オブジェクトは VRam に保存されますか?
私が本当に求めているのは、たとえばAssimpを使用してモデルをロードすると、頂点とインデックスのデータが頂点配列オブジェクトに読み込まれます。Ram でデータを複製しますか、それとも GPU にコピーしますか?
ここでは、OpenGLの用語についての理解が不足しているようです。
「頂点およびインデックスデータ」を頂点配列オブジェクトに読み込むことはできません。実際にはデータを保存しません。データの配列はバッファオブジェクトに格納されます。VAOはそれらを参照するだけです。VAOは、OpenGLがそれらの意味を理解できるように、これらのバッファー内のデータがどのようにフォーマットされるかを記述します。
クライアント側の頂点配列について質問している場合(VAOでクライアント側の頂点配列を使用できますが、「オブジェクト」という単語がないことに注意してください)、定義上、それらはGPUに保存されません。クライアント側の頂点配列の「クライアント」は、ユーザーのコードです。IE:割り当て、所有、および管理するメモリ。
バッファオブジェクトの使用について質問している場合は、はい、バッファオブジェクトストレージは「サーバー」(つまり、OpenGL実装が所有するメモリ)にあります。特定の時点で実際にGPU上にあるかどうかは、判断できるものではありません。ただし、、、またはバッファオブジェクトを更新するその他の関数を呼び出すglBufferData
と、サーバーはそのデータをコピーします。glBufferSubData