Microsoft DirectX 8.0 (C++)

IDirect3DDevice8::CreateIndexBuffer

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

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

パラメータ

Length
[in] インデックス バッファのサイズ (バイト単位)。
Usage
[in] このリソースの使用方法の制御情報を記述する、次の 1 つ以上のフラグの組み合わせ。
D3DUSAGE_DONOTCLIP
インデックス バッファの内容が決してクリッピングを要求しないことを示す。
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
インデックス バッファへの書き込み操作しか実行できないことをシステムに通知する。このフラグを使用すると、ドライバは最適なメモリ領域を選択して効率的に書き込み操作やレンダリングを実行できる。この能力を使用して作成されたインデックス バッファからの読み込みを試みると、パフォーマンスが低下する場合がある。
Format
[in] D3DFORMAT 列挙型のメンバ。インデックス バッファのフォーマットを示す。有効な設定は次のとおりである。
D3DFMT_INDEX16
インデックスはそれぞれ 16 ビットである。
D3DFMT_INDEX32
インデックスはそれぞれ 32 ビットである。

「注意」を参照すること。

Pool
[in] D3DPOOL 列挙型のメンバ。リソースが配置される有効なメモリ クラスを記述する。
ppIndexBuffer
[out, retval] 作成されたインデックス バッファ リソースを表す IDirect3DIndexBuffer8 インターフェイスへのポインタのアドレス。

戻り値

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

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

D3DERR_INVALIDCALL
D3DERR_OUTOFVIDEOMEMORY
D3DXERR_INVALIDDATA
E_OUTOFMEMORY

注意

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

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

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

動作環境

  ヘッダー : d3d8.h で宣言。
  インポート ライブラリ :D3d8.lib を使用。

参照

IDirect3DIndexBuffer8::GetDesc