0

XMMATRIX と XMVECTOR をダンプする良い方法はありますか?

XMMATRIX mx = XMMatrixScaling(...) * XMMatrixTranslation(...);

DumpMatrix(mx); // printf the 4x4 matrix member

DumpMatrixみたいな機能が欲しい。

確認しDirectMath.hました。そして、見つけた

typedef __m128 XMVECTOR;

(x, y, z, w)__m128から抽出するには?

4

2 に答える 2

4

XMMATRIXDirectX Math ライブラリの設計では、およびXMVECTORメンバーへの直接アクセスは許可されていません。これは、特別なSIMD データ型で値を格納するためである可能性があります。

のコンポーネントを読み取るには、次のようにaccesses functionsXMVECTORを使用できます。XMVectorGet*

XMVECTOR V;
float x = XMVectorGetX(V);
float w;
XMVectorGetWPtr(&w, V);

または、直接アクセスできるスカラー メンバを持つに格納するXMStore*関数:XMFLOAT4

XMVECTOR vPosition;
XMFLOAT4 fPosition;
XMStoreFloat4(&fPosition, vPosition);
float x = fPosition.x;

XMMATRIXに保存できますXMFLOAT4X4

XMMATRIX mtxView;
XMFLOAT4X4 fView;
XMStoreFloat4x4(&fView, mtxView);
float fView_11 = fView._11;

反対のことを行うLoad 関数もあります: write toXMVECTORXMMATRIX.

詳細については、DirectXMath プログラミング リファレンスを参照してください。

ハッピーコーディング!

于 2013-06-22T20:46:36.033 に答える