IDirect3DDevice9::CreateIndexBuffer メソッド

IDirect3DDevice9::CreateIndexBuffer メソッド

インデックス バッファを作成する。

構文

HRESULT CreateIndexBuffer(      
    UINT Length,
    DWORD Usage,
    D3DFORMAT Format,
    D3DPOOL Pool,
    IDirect3DIndexBuffer9** ppIndexBuffer,
    HANDLE* pHandle
);

パラメータ

  • Length
    [in] インデックス バッファのサイズ (バイト単位)。
  • Usage
    [in] 使用法は 0 にできる。この場合使用法の値は設定されない。ただし、使用法が必要な場合は、1 つまたは複数の D3DUSAGE 定数の組み合わせを使う。CreateIndexBuffer 内の使用方法パラメータと、IDirect3D9::CreateDevice の動作フラグを合致させて使うことが推奨される。詳細情報は「注意」を参照すること。
  • Format
    [in] D3DFORMAT 列挙型のメンバ。インデックス バッファのフォーマットを記述する。有効な設定は次のとおりである。「注意」を参照すること。
    • D3DFMT_INDEX16
      インデックスはそれぞれ 16 ビットである。
    • D3DFMT_INDEX32
      インデックスはそれぞれ 32 ビットである。
  • Pool
    [in] D3DPOOL 列挙型のメンバ。リソースが配置される有効なメモリ クラスを記述する。
  • ppIndexBuffer
    [out, retval] 作成されたインデックス バッファ リソースを表す IDirect3DIndexBuffer9 インターフェイスへのポインタのアドレス。
  • pHandle
    [in] 予約済み。このパラメータは NULL に設定する。

戻り値

成功した場合は、D3D_OK を返す。

失敗した場合は、次のいずれかの値を返す。

D3DERR_INVALIDCALL メソッドの呼び出しが無効である。たとえば、メソッドのパラメータに無効な値が設定されている場合などである。
D3DERR_OUTOFVIDEOMEMORY Microsoft® Direct3D® が処理を行うのに十分なディスプレイ メモリがない。
D3DXERR_INVALIDDATA データが無効である。
E_OUTOFMEMORY Direct3D が呼び出しを完了するための十分なメモリを割り当てることができなかった。

注意

インデックス バッファは、インデックスを保持するために使われるメモリ リソースであり、サーフェイス バッファおよび頂点バッファに似ている。インデックス バッファを使うことで、Direct3D では、データの不必要なコピー処理を避けることができ、意図されている使用方法の最適なメモリ タイプにバッファを格納できる。

インデックス バッファを使用するには、インデックス バッファを作成し、それをロックして、インデックスを格納する。次に、そのインデックス バッファをアンロックし、IDirect3DDevice9::SetIndices に渡し、頂点と頂点シェーダを設定し、IDirect3DDevice9::DrawIndexedPrimitive を呼び出してレンダリングを行う。

D3DCAPS9 構造体の MaxVertexIndex メンバは、レンダリングで有効なインデックス バッファのタイプを示す。

参照

IDirect3DIndexBuffer9::GetDesc