【发布时间】:2017-11-08 11:12:11
【问题描述】:
我拿了一个示例代码来测试 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
可能的原因是什么,我该怎么办?
(我应该搜索这段代码之外的缺陷吗?)
【问题讨论】:
-
是什么让你认为正确答案是
2, 1, 0?您是否使用调试器单步执行了代码? MS VS 2017 内置了一个很棒的图形调试器。 -
我无法重现您的问题。使用上面的代码,我得到了输出
2, 1, 0。 -
无法复制。
trans构建后立即包含哪些组件?我似乎记得glm的旧版本,其mat4默认构造函数使组件未初始化,而不是作为单位矩阵。 -
@G.M.是的,这就是问题所在。谢谢。将其初始化为单位矩阵会有所帮助。
标签: c++ opengl visual-studio-2017 glm-math