Microsoft DirectX 8.0 (Visual Basic)

インデックス バッファからのレンダリング

インデックス バッファのインデックス データをレンダリングするには、いくつかのステップが必要である。まず、Direct3DDevice8.SetStreamSource メソッドを呼び出して、ストリーム ソースを設定する必要がある。

Call m_D3DDevice.SetStreamSource( 0, VB, len(CUSTOMVERTEX) )

SetStreamSource の第 1 パラメータは、Direct3D にデバイス データ ストリームのソースを知らせる。第 2 パラメータは、データ ストリームにバインドする頂点バッファである。第 3 パラメータは、成分のサイズをバイト単位で指定する。上のサンプル コードでは、CUSTOMVERTEX のサイズが成分のサイズに使用されている。

次のステップでは、Direct3DDevice8.SetIndices メソッドを呼び出してインデックス データのソースを設定する。

Call m_D3DDevice.SetIndices( IB, 0 )

SetIndices が受け取る最初のパラメータは、設定するインデックス バッファのアドレスである。第 2 パラメータは、頂点ストリームの開始点である。

ストリームおよびインデックス ソースを設定した後、Direct3DDevice8.DrawIndexedPrimitive メソッドを使用して、インデックス バッファからインデックスを使用する頂点をレンダリングする。

Call m_D3DDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, _
                                      0, dwVertices, 0, dwIndices / 3)

DrawPrimitive が受け取る第 2 パラメータは、この呼び出しの間に使用される頂点群に対する最小の頂点インデックスである。第 3 パラメータは、この呼び出しで使用されるインデックスの数である (BaseVertexIndex + MinIndex から始まる)。第 4 パラメータは、インデックス バッファ内におけるインデックスの読み出し開始位置である。DrawPrimitive が受け取る最後のパラメータは、レンダリングするプリミティブの個数である。このパラメータは、プリミティブ カウントおよびプリミティブ タイプの関数である。上のコードでは、三角形を使用している。したがって、レンダリングするプリミティブの個数は、3 で割り切れるインデックス数となる。