如何正确地乘以一个标量XMMATRIX?

C ++和Direct X 11中使用DirectXMath及其XMMATRIX结构,如何用单个浮点标量乘以该matrix结构?

我想执行操作B = A * f ; 其中ABXMMATRIXf是浮点数。

我发现了各种function,以matrix乘以另一个matrix或vector。 我发现了各种函数来构造matrix。

我不能find标量乘法! 为什么没有这样的function? 有没有用例? 我错过了什么? 我如何实现标量乘法?

从文档看来,你使用的乘法运算符只是matrix – matrix乘法。

通过标量进行缩放的最直接的方法是将matrix乘以XMMatrixScaling(f,f,f) ,或者通过标量缩放组成XMMATRIX的每个行向量。

如果我不得不冒险一个猜测,那么我会认为这个库是为暴露高速vector化的函数而devise的,这些函数用于那些容易出错或难以作为最终用户实现的常见昂贵的操作。 从目前的其他答案来看,似乎有更多的便利function在更新版本的Windows套件,其中包括您寻求的运营商。

有一个乘法运算符。 您可以用a*b乘以标量b来乘XMMATRIX a*b

DirectXMath具有此操作所需的重载:

 struct XMMATRIX { XMMATRIX& operator*= (float S); XMMATRIX operator* (float S) const; friend XMMATRIX XM_CALLCONV operator* (float S, FXMMATRIX M); }; 

您可能遇到的问题是,您没有正确的名称空间范围活动来查找运算符*超载。 尝试

 using namespace DirectX; XMMATRIX B = A*f;