Directx 如何转储XMMATRIX成员值?

Directx 如何转储XMMATRIX成员值?,directx,directxmath,Directx,Directxmath,有什么好方法可以转储XMMATRIX和XMVECTOR吗 XMMATRIX mx = XMMatrixScaling(...) * XMMatrixTranslation(...); DumpMatrix(mx); // printf the 4x4 matrix member 我想要DumpMatrix类函数 我选中了DirectMath.h。发现 typedef __m128 XMVECTOR; 如何从m128中提取(x,y,z,w)。DirectX数学库设计不允许直接访问XMMATR

有什么好方法可以转储XMMATRIX和XMVECTOR吗

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

DumpMatrix(mx); // printf the 4x4 matrix member
我想要
DumpMatrix
类函数

我选中了
DirectMath.h
。发现

typedef __m128 XMVECTOR;

如何从m128中提取
(x,y,z,w)

DirectX数学库设计不允许直接访问
XMMATRIX
XMVECTOR
成员。这可能是因为它们以特殊方式存储值

要读取
XMVECTOR
的组件,您可以使用,例如:

XMVECTOR V;
float x = XMVectorGetX(V);
float w;
XMVectorGetWPtr(&w, V);
或者将其存储到具有可直接访问的标量成员的
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;
还有相反的方法:写入
XMVECTOR
XMMATRIX

有关更多信息,请参阅


快乐编码

DirectX数学库设计不允许直接访问
XMMATRIX
XMVECTOR
成员。这可能是因为它们以特殊方式存储值

要读取
XMVECTOR
的组件,您可以使用,例如:

XMVECTOR V;
float x = XMVectorGetX(V);
float w;
XMVectorGetWPtr(&w, V);
或者将其存储到具有可直接访问的标量成员的
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;
还有相反的方法:写入
XMVECTOR
XMMATRIX

有关更多信息,请参阅


快乐编码

我不能对答案发表评论,但我相信XMMATRIX的正确代码是:

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

因此,您可以使用新创建的XMFLOAT4X4访问矩阵成员值,我无法对答案进行评论,但我相信XMMATRIX的正确代码是:

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

这样您就可以使用新创建的XMFLOAT4X4访问矩阵成员值了,谢谢。我是Win32和DirectX的新手。D3D11的体系结构非常有趣。只需对此进行一点扩展,您还可以使用
XMVectorGet
函数访问
XMMATRIX
值:
XMMATRIX m=XMMatrixIdentity();浮点r2c2=XMVectorGetZ(m.r[2])(使用基于0的标记)。我相信,
XMMATRIX
提供了公众访问其4行向量的功能。谢谢。我是Win32和DirectX的新手。D3D11的体系结构非常有趣。只需对此进行一点扩展,您还可以使用
XMVectorGet
函数访问
XMMATRIX
值:
XMMATRIX m=XMMatrixIdentity();浮点r2c2=XMVectorGetZ(m.r[2])(使用基于0的标记)。我相信
XMMATRIX
提供了对其4行向量的公共访问,正是出于这个目的。你是对的,有几个输入错误。我确定了我的答案。谢谢你。你说得对,有几个打字错误。我确定了我的答案。非常感谢。