Microsoft DirectX 8.0 (Visual Basic)

カラー頂点シェーダ

ここでは、位置とディフィーズ色を持つ単純な頂点シェーダを初期化および使用するために必要なステップについて説明する。

最初のステップでは、位置と色を格納する構造体を宣言する。これを、次のサンプル コードに示す。

Private Type XYZBuff
    x As Single
    y As Single
    z As Single
End Type

Private Type ColBuf
    color As Long
End Type

Const XYZBUFF_FVF = (D3DFVF_XYZ)
Const COLBUFF_FVF = (D3DFVF_DIFFUSE)

次のステップでは、頂点シェーダ宣言を作成する。これを、次のサンプル コードに示す。

Dim decl(5) As Long

decl(0) = D3DVSD_STREAM(0)
decl(1) = D3DVSD_REG(D3DVSDE_POSITION, D3DVSDT_FLOAT3)
decl(2) = D3DVSD_STREAM(1)
decl(3) = D3DVSD_REG( D3DVSDE_DIFFUSE, D3DVSDT_UBYTE)
decl(4) = D3DVSD_END()

次のステップでは、Direct3DDevice8.CreateVertexShader メソッドを呼び出して頂点シェーダを作成する。

Call m_D3DDevice.CreateVertexShader( decl, ByVal 0, vShader, 0)

CreateVertexShader の第 2 パラメータに ByVal を渡して、この頂点シェーダで固定機能パイプラインを使用することを Direct3D に指示する。

頂点バッファと頂点シェーダは、作成後はいつでも使用できる。次のサンプル コードは、頂点シェーダの設定方法、ストリーム ソースの設定方法、および新しい頂点シェーダを使用する三角形リストの描画方法を示している。

Call m_D3DDevice.SetVertexShader( vShader )
Call m_D3DDevice.SetStreamSource( 0, xyzbuf, 4 * len(xyzbuf))
Call m_D3DDevice.SetStreamSource( 1, colbuf, 2 * len(colbuf))
Call m_D3DDevice.SetIndices( IB, 0 )
Call m_D3DDevice.DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0, max - min + 1, 0, count / 3 )