Microsoft DirectX 8.0 (C++)

インデックス バッファの作成

IDirect3DDevice8::CreateIndexBufferメソッドを呼び出して、インデックス バッファ オブジェクトを作成する。このメソッドは、5 つのパラメータを受け取る。第 1 パラメータは、インデックス バッファの長さをバイト単位で指定する。

第 2 パラメータは、使用コントロール セットである。特に、この値は、インデックスによって参照される頂点がクリッピング情報を格納できるかどうかを指定する。パフォーマンスを向上させるには、クリッピングの必要がないときに D3DUSAGE_DONOTCLIP を指定する。

第 3 パラメータは、各インデックスのサイズを指定する D3DFORMAT 列挙型の D3DFMT_INDEX16 または D3DFMT_INDEX32 メンバのいずれかである。

第 4 パラメータは、新しいインデックス バッファをメモリ内のどの位置に配置するかを指示する D3DPOOL 列挙型のメンバである。

CreateIndexBuffer が受け取る最後のパラメータは、呼び出しが成功したときに頂点バッファ オブジェクトの新しい IDirect3DIndexBuffer8 インターフェイスへのポインタが格納される変数のアドレスである。

次の C++ サンプル コードは、インデックス バッファの作成方法を示している。

/*
* この例では、変数 d3dDevice は
* Direct3DDevice オブジェクトによって公開される IDirect3DDevice8 インターフェイスへのアドレスであり、
 * g_IB は LPDIRECT3DINDEXBUFFER8 型の変数である。
 
 */

if( FAILED( d3dDevice->CreateIndexBuffer( 16384 *sizeof(WORD),
                                            D3DUSAGE_WRITEONLY, D3DFMT_INDEX16,
                                            D3DPOOL_DEFAULT, &g_IB ) ) )
    return E_FAIL;