Platform SDK: DirectX

頂点バッファの記述

[C++]

頂点バッファの記述は、能力について行う。頂点バッファは、システム メモリ内にだけ存在できるのか、書き込み操作だけに使用されるのか、頂点バッファが含むことができる頂点の種類と数、頂点バッファが作成されてから最適化されたかどうかなどを記述する。これらの特性はすべて D3DVERTEXBUFFERDESC 構造体の中に保持される。

[Visual Basic]

頂点バッファの記述は、能力について行う。頂点バッファは、システム メモリ内にだけ存在できるのか、書き込み操作だけに使用されるのか、頂点バッファが含むことができる頂点の種類と数、頂点バッファが作成されてから最適化されたかどうかなどを記述する。これらの特性はすべて D3DVERTEXBUFFERDESC 型に保持される。

頂点バッファの記述は、頂点バッファの作成方法をシステムに知らせたり、または既存のバッファの作成方法 (あるいは、バッファが作成されて以降最適化されたかどうか) をアプリケーションに知らせる。新しい頂点バッファを作成するには、完全な記述を指定しなければならない。また、空の記述構造体を渡すと、以前作成した頂点バッファの能力がシステムにより記入される。これらのタスクの詳細については、「頂点バッファの作成」および「頂点バッファの記述の取得」を参照すること。

[C++]

ほとんどの DirectX 構造体に共通の dwSize メンバは、構造体バージョンの識別に使用されるため、どのメソッドで構造体を使用する場合でも、まず、このメンバを構造体サイズに設定しなければならない。dwCaps 構造体メンバは、一般的な能力フラグを含む。D3DVBCAPS_SYSTEMMEMORY フラグは、システムが頂点バッファをシステム メモリ内に作成する (または作成済みである) ことを示す。アプリケーションでソフトウェア レンダリング デバイスまたは HAL デバイス (IID_IDirect3DHALDevice) を使用する場合は、明示的にシステム メモリ頂点バッファを作成する。そうでない場合は、フラグを省略して、最良の作成場所の判断をシステムに任せる。明示的なシステム メモリ頂点バッファの詳細については、「デバイスの種類と頂点処理の要件」を参照すること。

dwCaps に D3DVBCAPS_WRITEONLY フラグを指定すると、頂点バッファ メモリを書き込み操作にのみ使用することがシステムに通知される。これによりドライバは、処理とレンダリングをできるだけ高速にする最良のメモリ位置座標に頂点データを配置することをやめる。このフラグを使用する頂点バッファからの読み出しでは、メモリ アクセス時間が非常に低速になることがある。D3DVBCAPS_WRITEONLY フラグを使用しないと、一部の処理とレンダリングの速度を犠牲にするが、読み出し操作が非効率的になる位置座標にドライバがデータを置くことは少なくなる。フラグを何も指定しないと、アプリケーションは頂点バッファ内でデータの読み出し操作と書き込み操作を行うものと見なされる。

 :  D3DVBCAPS_OPTIMIZED フラグは、頂点バッファの作成時には使用されない。システムは、頂点バッファを最適化するときにこの能力フラグを設定する。

最後の 2 つの D3DVERTEXBUFFERDESC 構造体メンバは、その他の能力を記述する。dwFVF メンバには、バッファに含めることができる頂点の種類を識別する柔軟な頂点フォーマット フラグの組み合わせが含まれる。頂点バッファの容量は、dwNumVertices メンバで指定する、頂点バッファに収めることができる頂点の合計数によって測定される。

[Visual Basic]

lCaps メンバは、一般的な能力フラグを含む。D3DVBCAPS_SYSTEMMEMORY フラグは、システムが頂点バッファをシステム メモリ内に作成する (または作成済みである) ことを示す。アプリケーションでソフトウェア レンダリング デバイスまたは HAL デバイス (IID_IDirect3DHALDevice) を使用する場合は、明示的にシステム メモリ頂点バッファを作成する。そうでない場合は、フラグを省略して、最良の作成場所の判断をシステムに任せる。明示的なシステム メモリ頂点バッファの詳細については、「デバイスの種類と頂点処理の要件」を参照すること。

lCaps に D3DVBCAPS_WRITEONLY フラグを指定すると、頂点バッファ メモリを書き込み操作にのみ使用することがシステムに通知される。これによりドライバは、処理とレンダリングをできるだけ高速にする最良のメモリ位置座標に頂点データを配置することをやめる。このフラグを使用する頂点バッファからの読み出しでは、メモリ アクセス時間が非常に低速になることがある。D3DVBCAPS_WRITEONLY フラグを使用しないと、一部の処理とレンダリングの速度を犠牲にするが、読み出し操作が非効率的になる位置座標にドライバがデータを置くことは少なくなる。フラグを何も指定しないと、アプリケーションは頂点バッファ内でデータの読み出し操作と書き込み操作を行うものと見なされる。

 :  D3DVBCAPS_OPTIMIZED フラグは、頂点バッファの作成時には使用されない。システムは、頂点バッファを最適化するときにこの能力フラグを設定する。

最後の 2 つの D3DVERTEXBUFFERDESC メンバは、その他の能力を記述する。lFVF メンバには、バッファに含めることができる頂点の種類を識別する柔軟な頂点フォーマット フラグの組み合わせが含まれる。頂点バッファの容量は、lNumVertices メンバで指定する、頂点バッファに収めることができる頂点の合計数によって測定される。