我在开始使用 glm 时遇到了一些非常简单的错误(在 VS2010 中)。我有这个短代码:
glm::mat4 translate = glm::translate(glm::mat4(1.f), glm::vec3(2.f, 0.f, 0.f));
glm::vec4 vector(1.f,1.f,1.f,0.f);
glm::vec4 transformedVector = translate * vector;
变换向量的结果与其原始值相同(1.f, 1.f, 1.f, 0.f)。我不知道我在这里缺少什么。我已经尝试过旋转矩阵并且工作正常,该点已正确转换。
glm::mat4 rotate = glm::rotate(glm::mat4(1.f), 90.f, glm::vec3(0.f, 0.f, 1.f));
glm::vec4 vector(1.f, 1.f, 1.f, 0.f);
glm::vec4 transformedVector = rotate * vector;
好的,我发现了问题所在。我想翻译一个顶点而不是一个向量,在这种情况下,我必须将 w 值设置为 1。