Microsoft DirectX 8.0 (Visual Basic) |
頂点バッファに頂点が格納されたので、次はディスプレイをレンダリングする。ディスプレイのレンダリングでは、まずバック バッファを青色にクリアした後、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 : 行列の使い方」では、行列の概念とその使用方法について説明する。