|
|
在DX的SDK开发包Direct3D里面一个例子Bump waves是水波的例子,其中里面的函数SetEMBMStates里有这样的片断:
// tu = (0.8x + 0.5z) / z
// tv = (0.8y - 0.5z) / z
D3DXMATRIXA16 mat;
mat._11 = 0.8f; mat._12 = 0.0f; mat._13 = 0.0f;
mat._21 = 0.0f; mat._22 = 0.8f; mat._23 = 0.0f;
mat._31 = 0.5f; mat._32 =-0.5f; mat._33 = 1.0f;
mat._41 = 0.0f; mat._42 = 0.0f; mat._43 = 0.0f;
m_pd3dDevice->SetTransform( D3DTS_TEXTURE1, &mat );
m_pd3dDevice->SetTextureStageState( 1, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT3 | D3DTTFF_PROJECTED );
m_pd3dDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION | 1 );
这里为什么要将纹理坐标做这样的转换呢?
(// tu = (0.8x + 0.5z) / z
// tv = (0.8y - 0.5z) / z)
|
|