gpt4 book ai didi

c++ - 将 glm::mat4 转换为 XMFLOAT4X4

转载 作者:行者123 更新时间:2023-11-28 07:30:55 25 4
gpt4 key购买 nike

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

我的初始矩阵是 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 矩阵之前转置它。

最佳答案

XMFLOAT4X4 有一个来自 float * 的构造函数,所以你可以调用:

auto xmMatrix = XMFLOAT4X4( &glmMatrix[0][0] );

只需确保您的矩阵大小相同并使用相同的行/列主要顺序即可。

关于c++ - 将 glm::mat4 转换为 XMFLOAT4X4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17743461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com