OpenGL®頂点バッファーとは何ですか?
Open GraphicsLibrary®(OpenGL®)頂点バッファーは、多くの場合、グラフィックカードに直接配置されているコンピューターメモリの領域であり、頂点の配列とそのプロパティに非常に高速にアクセスできます。 ほとんどの場合、OpenGL®頂点バッファーを使用して頂点バッファーオブジェクト(VBO)を作成し、3次元(3D)シーン内のオブジェクトを即時モードではなく表示リストの一部としてレンダリングできるようにします。 ただし、VBOの外部で頂点バッファーを使用して、オブジェクトに関する情報を保存したり、複雑なモデルでの変換を容易にしたりすることができます。 頂点バッファは、データ構造のように割り当てることができるため、グラフィックスカードのメモリに配置する必要がないことに注意してください。 OpenGL®頂点バッファーがVBOの一部として使用される場合、使用されるグラフィックカードは、バッファーがグラフィックメモリに配置されるように、特別なOpenGL®VBO拡張をサポートする必要があります。
最も基本的なレベルでは、OpenGL®頂点バッファーは単なるバッファーであり、データを格納できるメモリの割り当てられた領域です。 頂点配列がその中に格納されると、頂点バッファーになります。 OpenGL®頂点配列は、個々の頂点のすべてのプロパティを定義するデータ構造の配列です。 この情報には、3Dシーンの頂点のX、Y、Z位置、頂点の色、法線などのプロパティを含めることができます。
即時モードレンダリングでは、OpenGL®コマンドはプログラム内から呼び出されると直接実行されます。 これらの場合、頂点を配置および描画するコマンドをハードウェアに直接与えることができるため、頂点配列を持つ必要はありませんが、これは深刻なパフォーマンスの問題を引き起こす可能性があります。 非イミディエイトモードレンダリングの場合、3Dオブジェクトまたはモデルに関する情報は、OpenGL®が簡単に解釈できる構造を持つように、最初に頂点配列に配置する必要があります。 その配列は、OpenGL®頂点バッファーと呼ばれるメモリの特別な領域に保存する必要があります。
それ自体では、頂点バッファは、オブジェクトの描画に使用される情報の完全なコレクションである以外に、特別な属性を持つ必要はありません。 ただし、OpenGL拡張機能を介してOpenGL®頂点バッファーがOpenGL®頂点バッファーオブジェクトに変換されると、頂点バッファーで定義されたオブジェクトの描画を最適化するのに役立つイベントの特別なシーケンスが発生します。 つまり、OpenGL®が使用するクライアントサーバー設定のサーバー側で、バッファが割り当てられてグラフィックカードメモリに保存されます。 一部の計算は、VBOで事前に実行できるため、可能な限り高速にレンダリングできます。 VBOの外部では、プレーンな頂点バッファーは通常この処理を受けず、他のデータ型と同様に割り当てて使用できます。