我想从方向四元数和位置向量创建一个初始变换矩阵。
我的初始矩阵是 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 使用列主矩阵,而 XMFLOAT4X4 使用行主矩阵,这就是我在尝试转换 glm 矩阵之前转置它的原因。