Platform SDK: DirectX

IDirect3DDevice7::DrawIndexedPrimitiveVB

IDirect3DDevice7::DrawIndexedPrimitiveVB メソッドは、頂点バッファ内の頂点の配列に対するインデックスに基づき、ジオメトリ プリミティブをレンダリングする。

HRESULT DrawIndexedPrimitiveVB(
  D3DPRIMITIVETYPE        d3dptPrimitiveType,
  LPDIRECT3DVERTEXBUFFER7 lpd3dVertexBuffer,
  DWORD  dwStartVertex,
  DWORD  dwNumVertices,
  LPWORD lpwIndices,
  DWORD  dwIndexCount,
  DWORD  dwFlags
);

パラメータ

d3dptPrimitiveType
このコマンドによってレンダリングされるプリミティブの型。これは、D3DPRIMITIVETYPE 列挙型のメンバの 1 つでなければならない。

D3DPRIMITIVETYPE の D3DPT_POINTLIST メンバはインデックス付けされない。

lpd3dVertexBuffer
頂点の配列を格納する頂点バッファの IDirect3DVertexBuffer7 インターフェイスのアドレス。頂点は、トランスフォームされていてもいなくても、最適化されていてもいなくてもよい。
dwStartVertex
頂点バッファ内のレンダリングされる最初の頂点のインデックス
dwNumVertices
頂点バッファ内のレンダリングされる頂点の合計個数。
lpwIndices
頂点バッファ内の頂点へのインデックス付けに使用される、WORD の配列のアドレス。配列の値は、範囲 [0, dwNumVertices – 1] で頂点をインデックス付けする必要がある。
dwIndexCount
lpwIndices. における配列内のインデックス数。許容される最大インデックス数は D3DMAXNUMVERTICES (0xFFFF) である。
dwFlags
待機せずにプリミティブをレンダリングする場合はゼロ、または以下のフラグを指定する。
D3DDP_WAIT
メソッドは、ポリゴンがカードに送られるとすぐに返るのではなく、レンダリングが終わるまで待つ。(シーン キャプチャ カードでは、カードからの応答があり次第、メソッドは返る。) このフラグはデバッグによく使用される。アプリケーションは、シーンを先に進める前に確実に更新しておくためにも、このフラグを使用するべきではない。

戻り値

成功すれば D3D_OK を返す。

失敗すれば、次のいずれかの値を返す。

D3DERR_INVALIDPRIMITIVETYPE
D3DERR_INVALIDVERTEXTYPE
D3DERR_VERTEXBUFFERLOCKED
DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
DDERR_WASSTILLDRAWING

注意

レンダリングする頂点が、指定した頂点フォーマットと一致していることを確認する。パフォーマンス上の理由から、Direct3D は頂点のサイズおよびストライドと提供された柔軟な頂点フォーマットとの照合を行わない。これが一致していないと、メモリ障害が発生しやすい。

頂点バッファからレンダリングするときは、頂点バッファ メソッドを使用する必要がある。

このメソッドは、従来のインターフェイスで使用されたメソッドとは異なり、dwFlags パラメータで D3DDP_DONOTCLIP、D3DDP_DONOTLIGHT、および D3DDP_DONOTUPDATEEXTENTS フラグを受け取らない。これらのフラグの機能性は、現在では D3DRENDERSTATE_CLIPPINGD3DRENDERSTATE_LIGHTING、および D3DRENDERSTATE_EXTENTS レンダリング ステートによって使用できる。

ソフトウェア デバイス (MMX および RGB デバイス) は、ローカルまたは非ローカルであるかどうかにかかわらず、ビデオ メモリから頂点バッファをレンダリングすることはできない。ソフトウェア デバイスを使用して頂点バッファをレンダリングするには、頂点バッファがシステム メモリに存在しなければならない。ハードウェア デバイスは、システム メモリまたはビデオ メモリのどちらの頂点バッファからでも、レンダリングすることができる。

頂点バッファがロックされているときはレンダリングすることはできない。ロックされた頂点バッファを使用して IDirect3DDevice7::DrawIndexedPrimitiveVB または IDirect3DDevice7::DrawPrimitiveVB メソッドを呼び出そうとすると失敗し、D3DERR_VERTEXBUFFERLOCKED が返される。

IDirect3DDevice3 インターフェイスでは、このメソッドは従来の IDirect3DVertexBuffer インターフェイスへのポインタを受け取った。

動作環境

  Windows NT/2000 :Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  バージョン :DirectX 7.0 が必要。
  ヘッダー : d3d.h で宣言。

参照

IDirect3DDevice7::DrawPrimitiveIDirect3DDevice7::DrawPrimitiveStridedIDirect3DDevice7::DrawPrimitiveVBIDirect3DDevice7::DrawIndexedPrimitiveIDirect3DDevice7::DrawIndexedPrimitiveStrided