【问题标题】:How can I simplify matrices multiplication at DirectX11?如何在 DirectX11 上简化矩阵乘法?
【发布时间】:2014-11-25 20:00:48
【问题描述】:

我可以简化以下语句以使其更易于阅读吗?关于对齐要求,我可以逐步执行乘法运算吗?

DirectX::XMStoreFloat4x4(&this->worldTransform, DirectX::XMMatrixMultiply(DirectX::XMMatrixMultiply(DirectX::XMMatrixScalingFromVector(DirectX::XMLoadFloat4(&this->scaling)), DirectX::XMMatrixRotationQuaternion(DirectX::XMLoadFloat4(&this->rotation))), DirectX::XMMatrixTranslationFromVector(DirectX::XMLoadFloat4(&this->translation))));

【问题讨论】:

    标签: c++ directx-11 directxmath


    【解决方案1】:

    使用XMVECTORXMMATRIX 局部变量。在优化的构建中生成的代码应该是相同的。

    XMVECTOR vTrans = DirectX::XMLoadFloat4(&this->translation);
    XMMATRIX mTrans = DirectX::XMMatrixTranslationFromVector(vTrans);
    XMVECTOR vScale = DirectX::XMLoadFloat4(&this->scaling);
    XMMATRIX mScale = DirectX::XMMatrixScalingFromVector(vScale);
    XMVECTOR vRot = DirectX::XMLoadFloat4(&this->rotation);
    XMMATRIX mRot = DirectX::XMMatrixRotationQuaternion(rot);
    XMMATRIX mTemp = DirectX::XMMatrixMultiply(mScale, mRot);
    mTemp = DirectX::XMMatrixMultiply(mTemp, mTrans);
    DirectX::XMStoreFloat4x4(&this->worldTransform, mTemp);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多