gpt4 book ai didi

c++ - "glm::translate"输出一个包含不正确值的矩阵

转载 作者:搜寻专家 更新时间:2023-10-31 00:08:45 25 4
gpt4 key购买 nike

我拿了一个示例代码来测试 glm::translate 函数:

glm::vec4 vec(1.0f, 0.0f, 0.0f, 1.0f);
glm::mat4 trans;
trans = glm::translate(trans, glm::vec3(1.0f, 1.0f, 0.0f));
vec = trans * vec;
std::cout << vec.x << ", " << vec.y << ", " << vec.z << std::endl;

输出如下:

-4.29497e+08, -4.29497e+08, -4.29497e+08

而不是预期的 2, 1, 0

可能的原因是什么,我该怎么办?

(我应该在这段代码之外寻找缺陷吗?)

最佳答案

-4.29497e+08

这看起来像是未初始化的内存,这让我相信缺陷在于:

glm::mat4 trans;

您还没有初始化矩阵,但对其进行了算术运算。您不能假设构造函数将初始化它的内存,因此更改为:

glm::mat4 trans(1.0f);

这应该可以解决问题。

可能不会出现在所有开发环境中,例如,VS 中的 Debug模式有一些保护措施来防止这种情况,但它会出现在 Release模式中。

简单地说:练习RAII:资源获取就是初始化。至少,将内存归零,因为当重新分配内存时,它将被设置为上次释放时的先前值。

关于c++ - "glm::translate"输出一个包含不正确值的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47178228/

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