将glm :: mat4转换为XMFLOAT4X4

时间:2013-07-19 10:07:05

标签: c++ type-conversion glm-math xna-math-library

我想从方向四元数和位置向量创建初始变换矩阵。

我的初始矩阵是glm格式,但我想将glm矩阵转换为XMFLOAT4X4矩阵。

glm::mat4 glm_mWorld= glm::toMat4(_qOrientation);
glm_mWorld[3]       = glm::vec4(_vPosition);

glm_mWorld = glm::transpose(glm_mWorld);

那么如何将glm_mWorld的内容加载到XMFLOAT4X4中呢?

更新: 所以在建议我使用memcpy之后,我想出了以下内容:

XMFLOAT4X4  mTransform;
XMFLOAT4    qOrient;

glm::mat4 glm_mWorld    = glm::toMat4(_descriptor._qOrientation);
glm_mWorld[3]           = glm::vec4(_descriptor._vPosition);

glm_mWorld = glm::transpose(glm_mWorld);

memcpy(&mTransform.m[0][0], &glm_mWorld[0][0], sizeof(glm::mat4));

这会导致错误:

glm-0.9.4.3\glm\core\type_vec4.inl(251): error C2440: '<function-style-cast>' : cannot convert from 'const glm::vec3' to 'float'

此外,关于列主要/行主要矩阵,glm使用列major,而XMFLOAT4X4使用row major,这就是我在尝试转换glm矩阵之前转置它的原因。

0 个答案:

没有答案