在DX11.2中已经移除了D3DX,xnamath等文件
数学库由DirectXMath,D3DX由DirectXTK,DirectXTex代替
DirectXTex:点击打开链接
DirectXTK:点击打开链接
以下列举几个需要注意的:
DX11.0中创建旋转矩阵使用:
D3DXMATRIX* D3DXMatrixRotationYawPitchRoll(
_Inout_ D3DXMATRIX *pOut,
_In_ FLOAT Yaw,
_In_ FLOAT Pitch,
_In_ FLOAT Roll
);
而DX11.2中创建旋转矩阵使用:
XMMATRIX XMMatrixRotationRollPitchYaw(
[in] float Pitch,
[in] float Yaw,
[in] float Roll
);
Note:注意参数的顺序,且该函数在DirectX namespace
DX11.0中使创建透视投影矩阵用:
D3DXMATRIX* D3DXMatrixPerspectiveFovLH(
_Inout_ D3DXMATRIX *pOut,
_In_ FLOAT fovy,
_In_ FLOAT Aspect,
_In_ FLOAT zn,
_In_ FLOAT zf
);
而在DX11.2中使用:
inline XMMATRIX XM_CALLCONV XMMatrixPerspectiveFovLH
(
float FovAngleY,
float AspectHByW,
float NearZ,
float FarZ
);
注意参数:这里第二个参数是height / Width , 而DX11.0中的Aspect是width / height
在DX11.2中:
通常使用XMFLOAT2,XMFLOAT3,XMFLOAT4作为类或者结构体的成员变量,而不是XMVECTOR
通常使用XMFLOAT4X4作为类或者结构体的成员变量,而不是XMMATRIX
XMVECTOR,XMMATRIX各自都是单独的类
通常我们要存取数据时,使用XMFLOAT类型,
要进行运算的时候将其转换为XMVECTOR,XMMATRIX类型进行运算
XMFLOAT4和XMVECTOR的互化:
VOID XMStoreFloat4x4(
[out] XMFLOAT4X4 *pDestination,
[in] XMMATRIX M
);