一、向量类型
1.局部变量或全局变量用XMVECTOR 类型。
2. 对于类中的数据成员, 使用XMFLOAT2(2d向量)、XMFLOAT3(3d向量)和XMFLOAT4(4d向量) 类型。
3. 在运算之前, 通过加载函数将XMFLOATn类型转换为 XMVECTOR 类型。
// 创建 XMFLOAT2 XMFLOAT2 float2( 2.0f, 3.0f);// 将 XMFLOAT2 转换为 XMVECTOR XMVECTOR vector2 = XMLoadFloat2(&float2);// 创建 XMFLOAT3 XMFLOAT3 float3(1.0f, 2.0f, 3.0f);// 将 XMFLOAT3 转换为 XMVECTOR XMVECTOR vector3 = XMLoadFloat3(&float3);// 创建 XMFLOAT4 XMFLOAT4 float4(1.0f, 2.0f, 3.0f, 4.0f);// 将 XMFLOAT4 转换为 XMVECTOR XMVECTOR vector4 = XMLoadFloat4(&float4);
4. 用XMVECTOR 实例来进行运算。
5. 通过存储函数将 XMVECTOR 类型转换为 XMFLOATn类型。
XMVECTOR vector = XMVectorSet(1.0f, 2.0f, 3.0f, 4.0f);// 将 XMVECTOR 存储到 XMFLOAT2 XMFLOAT2 float2;XMStoreFloat2(&float2, vector);// 将 XMVECTOR 存储到 XMFLOAT3 XMFLOAT3 float3;XMStoreFloat3(&float3, vector);// 将 XMVECTOR 存储到 XMFLOAT4 XMFLOAT4 float4;XMStoreFloat4(&float4, vector);
6.书中的XM_CALLCONV 是DirectX Math库中用于指定函数调用约定的一个宏。加在函数名之前,它会根据编译器的版本确定出对应的调用约定属性。
二、参数的传递
传递XMVECTOR 参数的规则如下:
1. 前3个XMVECTOR 参数应当用类型 FXMVECTOR;
2. 第4个XMVECTOR 参数应当用类型 GXMVECTOR;
3. 第5、6个XMVECTOR 参数应当用类型 HXMVECTOR;
4. 其余的XMVECTOR 参数应当用类型 CXMVECTOR。
三、DirectXMath的函数使用
1.官网函数手册:DirectXMath 库函数 - Win32 apps | Microsoft Learn