Microsoft DirectX 8.0 (Visual Basic) |
次に示すのは、テクスチャ座標処理によって特殊なテクスチャ エフェクトを出す方法である。
モデル上でテクスチャをアニメーションする (平行移動または回転を利用)
' 2D テクスチャ座標を持つ単一のテクスチャを使用する。このビット パターンは、 ' 必要に応じて、位置座標、法線、および色情報を追加できるように ' 拡張する必要がある。 lFVFTex = (D3FVF_TEX1 Or D3DFVF_TEXCOORDSIZE2(0))
SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2)
' M は、U および V 方向のテクスチャ座標を平行移動するための ' D3DMATRIX である。 ' 1 0 0 0 ' 0 1 0 0 ' du dv 0 0 (du および dv は各フレームを変更する) ' 0 0 0 0 dx.IdentityMatrix(M) M.rc31 = du M.ec32 = dv
モデルのカメラ空間位置座標の線形関数としてテクスチャ座標を作成する
' 入力頂点にはテクスチャ座標がなく、 ' 帯域幅が節約されている。3 つのテクスチャ座標は、カメラ空間 (x, y, z) の頂点位置座標を使用して ' 生成される。 SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION)
' 2 つの出力座標が使用される。 SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2)
' 次に示すように、 ' テクスチャ座標を線形関数として生成する。 ' u = Ux*x + Uy*x + Uz*x + Uw ' v = Vx*x + Vy*x + Vz*x + Vw ' この場合、行列 M は次のようになる。 ' Ux Vx 0 0 ' Uy Vy 0 0 ' Uz Vz 0 0 ' Uw Vw 0 0 SetTransform(D3DTS_TEXTURE0, M)
キューブ環境マップによる環境マッピングを実行する
SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR)
SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT3)
射影テクスチャを実行する
SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION)
' 2 つの出力座標を使用する。 SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTF_PROJECTED | D3DTTFF_COUNT3)