Direct3DDevice8.CreateVertexBuffer
頂点バッファを作成する。
object.CreateVertexBuffer( _
LengthInBytes As Long, _
Usage As Long, _
FVF As Long, _
Pool As CONST_D3DPOOL) As Direct3DVertexBuffer8
指定項目
- object
- Direct3DDevice8 オブジェクトを表すオブジェクト式。
- LengthInBytes
- 頂点バッファのサイズ (バイト単位)。柔軟な頂点フォーマット (FVF) バッファの場合は、Length は少なくとも 1 つの頂点を格納できる大きさでなければならないが、頂点サイズの倍数である必要はない。Length は FVF バッファについてのみ検証される。
- Usage
- このリソースの使用方法の制御情報を記述する。CONST_D3DUSAGEFLAGS 列挙で定義される次の 1 つ以上のフラグの組み合わせ。
- D3DUSAGE_DONOTCLIP
- 頂点バッファの内容が決してクリッピングを要求しないことを示す。このフラグが設定されたバッファを使ってレンダリングする場合は、D3DRS_CLIPPING レンダリング ステートが FALSE に設定されていなければならない。
- D3DUSAGE_DYNAMIC
- 頂点またはインデックス バッファが動的なメモリの使用を必要とすることを示す。この使用方法は、ドライバが配置する場所を決定できるので、ドライバにとって有効である。一般的に、静的な頂点バッファはビデオ メモリに配置され、動的な頂点バッファは AGP メモリに配置される。分割した静的な使用方法は存在しないことに注意すること。D3DUSAGE_DYNAMIC を指定しない場合に、頂点バッファは静的に作成される。D3DUSAGE_DYNAMIC は、D3DLOCK_DISCARD および D3DLOCK_NOOVERWRITE ロッキング フラグによって厳密に強制される。この結果、D3DLOCK_DISCARD および D3DLOCK_NOOVERWRITE は、D3DUSAGE_DYNAMIC を指定して作成された頂点およびインデックス バッファでのみ有効である。これらは、静的な頂点バッファでは有効なフラグではない。
動的な頂点バッファの使用の詳細については、「動的な頂点およびインデックス バッファの使い方」を参照すること。
D3DUSAGE_DYNAMIC は、管理下の頂点およびインデックス バッファでは指定できないことに注意すること。詳細については、「リソースの管理」を参照すること。
- D3DUSAGE_RTPATCHES
- 高次プリミティブの描画に頂点バッファを使用するとき設定する。
- D3DUSAGE_NPATCHES
- N パッチの描画に頂点バッファを使用するとき設定する。
- D3DUSAGE_POINTS
- ポイント スプライトまたはインデックス付きポイント リストの描画に、頂点バッファを使用するとき設定する。
- D3DUSAGE_SOFTWAREPROCESSING
- ソフトウェア頂点処理で使用する頂点バッファであることを示す。
- D3DUSAGE_WRITEONLY
- 頂点バッファへの書き込み操作しか実行できないことをシステムに知らせる。このフラグを使用することにより、ドライバは最適なメモリ領域を選択して効率的に書き込み操作やレンダリングを実行する。この能力を使用して作成された頂点バッファからの読み出しは失敗する。
- FVF
- 柔軟な頂点フォーマット フラグの組み合わせ。バッファ内の頂点の頂点フォーマットを記述する使用方法の指定子。このパラメータを有効な FVF コードに設定すると、作成される頂点バッファは FVF 頂点バッファになる (「注意」を参照)。このパラメータを 0 (ゼロ) に設定すると、頂点バッファは非 FVF 頂点バッファになる。
- Pool
- CONST_D3DPOOL 列挙のメンバ。リソースが配置される有効なメモリ クラスを記述する。
戻り値
作成された頂点バッファ リソースを表す Direct3DVertexBuffer8 オブジェクト。
エラー コード
失敗した場合はエラーが発生し、Err.Number に次のいずれかの値が設定される。
エラー トラッピングの詳細については、Microsoft® Visual Basic® の「エラー処理」を参照すること。
注意
Direct3DDevice8 クラスは、頂点バッファ オブジェクトに格納された頂点データを使用するプリミティブのレンダリングをサポートしている。頂点バッファは Direct3DDevice8 クラスから作成されて、頂点バッファの基になっている Direct3DDevice8 オブジェクトでのみ使用できる。
FVF パラメータにゼロ以外の値を設定するときは、有効な FVF コードでなければならず、これはバッファの内容が FVF コードによって特徴付けられることを示している。FVF コードで作成された頂点バッファは、FVF 頂点バッファと呼ばれる。詳細については、「FVF 頂点バッファ」を参照すること。
D3DUSAGE_SOFTWAREPROCESSING フラグは、頂点バッファがソフトウェア頂点処理で使われるものであることを示している。詳細については、「デバイスの種類と頂点処理の要件」を参照すること。
非 FVF バッファを使用して、マルチパス レンダリングまたはシングル パスのマルチテクスチャ レンダリングで、データをインターリーブすることができる。これを行うには、1 つのバッファにはジオメトリ データを格納し、もう 1 つのバッファにはレンダリングする各テクスチャのテクスチャ座標データを格納する。レンダリング時には、テクスチャ座標を格納する各バッファと共に、ジオメトリ データを格納するバッファがインターリーブされる。代わりに FVF バッファを使用した場合、各バッファに、レンダリングする各テクスチャに固有のテクスチャ座標データに加えて、同じジオメトリ データを格納する必要がある。これは、使用するストラテジにもよるが、スピードまたはメモリの面でマイナスとなる。テクスチャ座標の詳細については、「テクスチャ座標について」を参照すること。
参照
Direct3DVertexBuffer8.GetDesc、Direct3DDevice8.ProcessVertices