IDirect3DDevice9::CreateVertexBuffer メソッド (d3d9helper.h)
頂点バッファーを作成します。
構文
HRESULT CreateVertexBuffer(
[in] UINT Length,
[in] DWORD Usage,
[in] DWORD FVF,
[in] D3DPOOL Pool,
[out, retval] IDirect3DVertexBuffer9 **ppVertexBuffer,
[in] HANDLE *pSharedHandle
);
パラメーター
[in] Length
型: UINT
頂点バッファーのサイズ (バイト単位)。 FVF 頂点バッファーの場合、Length は少なくとも 1 つの頂点を含むのに十分な大きさにする必要がありますが、頂点サイズの倍数である必要はありません。 FVF 以外のバッファーの長さは検証されません。 「解説」を参照してください。
[in] Usage
種類: DWORD
使用量には 0 を指定できます。これは、使用量の値がないことを示します。 ただし、使用が必要な場合は、1 つ以上の D3DUSAGE 定数の組み合わせを使用します。 CreateVertexBuffer の usage パラメーターと IDirect3D9::CreateDevice の動作フラグを照合することをお勧めします。 詳細については、「解説」を参照してください。
[in] FVF
種類: DWORD
D3DFVF の組み合わせ。このバッファー内の頂点の頂点形式を記述する使用法指定子です。 このパラメーターが有効な FVF コードに設定されている場合、作成される頂点バッファーは FVF 頂点バッファーです (「解説」を参照)。 それ以外の場合、このパラメーターが 0 に設定されている場合、頂点バッファーは FVF 以外の頂点バッファーになります。
[in] Pool
種類: D3DPOOL
リソースを配置する有効なメモリ クラスを記述する、 D3DPOOL 列挙型のメンバー。 D3DPOOL_SCRATCHに設定しないでください。
[out, retval] ppVertexBuffer
種類: IDirect3DVertexBuffer9**
作成された頂点バッファー リソースを表す IDirect3DVertexBuffer9 インターフェイスへのポインターのアドレス。
[in] pSharedHandle
型: HANDLE*
予約済み。 このパラメーターを NULL に設定 します。 このパラメーターは、Direct3D 9 for Windows Vista で リソースを共有するために使用できます。
戻り値
種類: HRESULT
メソッドが成功した場合、戻り値はD3D_OK。 メソッドが失敗した場合、戻り値は次のいずれかになります:D3DERR_INVALIDCALL、D3DERR_OUTOFVIDEOMEMORY、E_OUTOFMEMORY。
注釈
頂点バッファーは、ハードウェアまたはソフトウェアの頂点処理で使用できます。 これは、デバイスと頂点バッファーの作成方法によって決まります。
デバイスが作成されると、CreateDevice は動作フラグを使用して、ハードウェアまたはソフトウェアの頂点を処理するかどうかを決定します。 次の 3 つのケースが考えられます。
- D3DCREATE_HARDWARE_VERTEXPROCESSINGを設定して、ハードウェア内の頂点を処理します。
- D3DCREATE_SOFTWARE_VERTEXPROCESSINGを設定して、ソフトウェア内の頂点を処理します。
- D3DCREATE_MIXED_VERTEXPROCESSINGを設定して、ハードウェアまたはソフトウェアの頂点を処理します。
頂点バッファーが作成されると、CreateVertexBuffer は usage パラメーターを使用して、ハードウェアまたはソフトウェアで頂点を処理するかどうかを決定します。
- CreateDevice でD3DCREATE_HARDWARE_VERTEXPROCESSINGを使用する場合、CreateVertexBuffer は 0 を使用する必要があります。
- CreateDevice でD3DCREATE_SOFTWARE_VERTEXPROCESSINGを使用する場合、CreateVertexBuffer は 0 または D3DUSAGE_SOFTWAREPROCESSINGを使用する必要があります。 どちらの値でも、頂点はソフトウェアで処理されます。
- CreateDevice でD3DCREATE_MIXED_VERTEXPROCESSINGを使用する場合、CreateVertexBuffer は 0 または D3DUSAGE_SOFTWAREPROCESSINGを使用できます。
IDirect3DDevice9 インターフェイスは、頂点バッファー オブジェクトに格納されている頂点データを使用したプリミティブのレンダリングをサポートしています。 頂点バッファーは IDirect3DDevice9 から作成され、作成元の IDirect3DDevice9 オブジェクトでのみ使用できます。
有効な FVF コードである必要がある 0 以外の値に設定すると、FVF パラメーターは、バッファーの内容が FVF コードによって特徴付けされることを示します。 FVF コードを使用して作成された頂点バッファーは、FVF 頂点バッファーと呼ばれます。 詳細については、「 FVF 頂点バッファー (Direct3D 9)」を参照してください。
FVF 以外のバッファーを使用すると、マルチパス レンダリングまたはマルチテキスト レンダリング中に 1 回のパスでデータをインターリーブできます。 これを行うには、1 つのバッファーにジオメトリ データが含まれており、他のバッファーにはレンダリングされる各テクスチャのテクスチャ座標が含まれます。 レンダリング時に、ジオメトリ データを含むバッファーは、テクスチャ座標を含む各バッファーとインターリーブされます。 FVF バッファーを代わりに使用する場合、各バッファーには、レンダリングされる各テクスチャに固有のテクスチャ座標データに加えて、同じジオメトリ データが含まれている必要があります。 これにより、使用される戦略に応じて、速度またはメモリのペナルティが発生します。 テクスチャ座標の詳細については、「 テクスチャ座標 (Direct3D 9)」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d9helper.h (D3D9.h を含む) |
Library | D3D9.lib |
こちらもご覧ください
IDirect3DDevice9::P rocessVertices