我正在使用DirectXMath.h,其中所有的乘法和运算都是使用XMVECTOR(SIMD包装器)完成的,并且用于存储的XMFLOAT3包含3个浮点数。但是在此特定代码段中,我确实需要为XMFLOAT3添加 *运算符 (适用于XMFLOAT3 * XMFLOAT3和XMFLOAT3 * float)。是否可以?或者必须篡改SDK中的DirectXMath header ?
最佳答案
继续前进,只需定义operator*
:
XMFLOAT3 operator*(XMFLOAT3 l, XMFLOAT3 r) {
XMVECTOR lvec(XMLoadFloat3(&l));
XMVECTOR rvec(XMLoadFloat3(&r));
//Perform operations
}
XMFLOAT3 operator*(XMFLOAT3 l, float r) {
XMVECTOR lvec(XMLoadFloat3(&l));
//Perform operations
}
XMFLOAT3 operator*(float l, XMFLOAT3 r) {
XMVECTOR rvec(XMLoadFloat3(&r));
//Perform operations
}