2

OpenGL の頂点配列オブジェクトは VRam に保存されますか?

私が本当に求めているのは、たとえばAssimpを使用してモデルをロードすると、頂点とインデックスのデータが頂点配列オブジェクトに読み込まれます。Ram でデータを複製しますか、それとも GPU にコピーしますか?

4

1 に答える 1

10

ここでは、OpenGLの用語についての理解が不足しているようです。

「頂点およびインデックスデータ」を頂点配列オブジェクトに読み込むことはできません。実際にはデータを保存しません。データの配列はバッファオブジェクトに格納されます。VAOはそれらを参照するだけです。VAOは、OpenGLがそれらの意味を理解できるように、これらのバッファー内のデータがどのようにフォーマットされるかを記述します。

クライアント側の頂点配列について質問している場合(VAOでクライアント側の頂点配列を使用できますが、「オブジェクト」という単語がないことに注意してください)、定義上、それらはGPUに保存されません。クライアント側の頂点配列の「クライアント」は、ユーザーのコードです。IE:割り当て、所有、および管理するメモリ。

バッファオブジェクトの使用について質問している場合は、はい、バッファオブジェクトストレージは「サーバー」(つまり、OpenGL実装が所有するメモリ)にあります。特定の時点で実際にGPU上にあるかどうかは、判断できるものではありません。ただし、、、またはバッファオブジェクトを更新するその他の関数を呼び出すglBufferDataと、サーバーはそのデータをコピーします。glBufferSubData

于 2012-10-13T01:04:44.217 に答える