2014-11-25 3 views
0

Могу ли я упростить следующее утверждение, чтобы сделать его более понятным для человека? Могу ли я сделать следующее умножение поэтапно относительно согласования требований?Как я могу упростить умножение матриц в DirectX11?

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)))); 

ответ

1

Использование XMVECTOR и XMMATRIX локальные переменные. Сгенерированный код должен быть идентичным в оптимизированной сборке.

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); 

 Смежные вопросы

  • Нет связанных вопросов^_^