Microsoft DirectX 8.0 (Visual Basic)

ステップ 3 : ディスプレイのレンダリング

頂点バッファに頂点が格納されたので、次はディスプレイをレンダリングする。ディスプレイのレンダリングでは、まずバック バッファを青色にクリアした後、BeginScene を呼び出す。

g_D3DDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET, &HFF&, 1#, 0
g_D3DDevice.BeginScene

頂点バッファの頂点のレンダリングは、いくつかのステップに分かれる。まず、ストリーム ソースを設定する。この場合は、ストリーム 0 を使用する。ストリームのソースは、Direct3DDevice8.SetStreamSource を呼び出して指定する。

g_D3DDevice.SetStreamSource 0, g_VB, sizeOfVertex

SetStreamSource の最初のパラメータは、Microsoft® Direct3D® にデバイス データ ストリームのソースを指示する。2 番目のパラメータは、データ ストリームにバインドする頂点バッファである。3 番目のパラメータは、コンポーネントのサイズをバイト単位で指定する。

次のステップは、Direct3DDevice8.SetVertexShader を呼び出して、使用する頂点シェーダを Direct3D に通知することである。完全なカスタム頂点シェーダは高度なトピックであるが、ほとんどの場合、頂点シェーダは単なる FVF である。これによって、処理する頂点のタイプが Direct3D に通知される。次のコードでは、頂点シェーダを設定している。

g_D3DDevice.SetVertexShader D3DFVF_CUSTOMVERTEX

SetVertexShader のパラメータは、使用する頂点シェーダへのハンドルだけである。このパラメータの値として、Direct3DDevice8.CreateVertexShader から返るハンドルまたは FVF コードを使用できる。ここでは、D3DFVF_CUSTOMVERTEX によって定義された FVF コードを使用している。

頂点シェーダの詳細については、「頂点シェーダ」を参照すること。

次のステップは、次のコードのように、Direct3DDevice8.DrawPrimitive を使って頂点バッファの頂点をレンダリングすることである。

g_D3DDevice.DrawPrimitive D3DPT_TRIANGLELIST, 0, 1

DrawPrimitive が受け取る最初のパラメータは、描画するプリミティブのタイプを Direct3D に指示するフラグである。このサンプルでは、D3DPT_TRIANGLELIST フラグを使って、三角形のリストを指定している。2 番目のパラメータは、ロードする最初の頂点のインデックスである。3 番目のパラメータは、描画するプリミティブの数を指定する。このサンプルでは、三角形を 1 つだけ描画するので、この値は 1 に設定される。

さまざまなプリミティブの詳細については、「3D プリミティブ」を参照すること。

最後のステップは、シーンを終了し、バック バッファをフロント バッファに表示することである。次のコードに、この処理を示す。

g_D3DDevice.EndScene
g_D3DDevice.Present ByVal 0, ByVal 0, 0, ByVal 0

バック バッファをフロント バッファに表示すると、クライアント ウィンドウに 3 種類の色のポイントを持つ三角形が表示される。

このチュートリアルでは、頂点を使ってジオメトリ形状をレンダリングする方法を示した。「チュートリアル 3 : 行列の使い方」では、行列の概念とその使用方法について説明する。