为什么GLM不翻译顶点

Why glm does not translate vertex

本文关键字:顶点 翻译 GLM 为什么      更新时间:2023-10-16

我正在尝试使用GLM转换矩阵转换。

,但看起来,我做错了什么。我试图更改Vemm和M V的侧面,但是我也有同样的结果。RES具有与to相同后的值;

void transform(V3 &to, PTransformation t)
{
  float v1 = to.x();
  float v2 = to.y();
  float v3 = to.z();
  glm::vec4 v = glm::vec4(v1, v2, v3, 1.0f);
  glm::vec3 valuesToTranslate(t.translateX, t.translateY, t.translateZ);
  glm::mat4 m = glm::translate(valuesToTranslate);
  glm::vec4 res = v * m;
  to.e[0] = res.x;
  to.e[1] = res.y;
  to.e[2] = res.z;
}

我已经用GLM 0.9.9和GCC 7.4.0对此进行了测试,并且在切换vm的乘法顺序后起作用。

glm::vec4 v = glm::vec4(0.0, 4.0, 0.0, 1.0f);
glm::vec3 valuesToTranslate(8.0, 0.0, 0.0);
glm::mat4 m = glm::translate(valuesToTranslate);
glm::vec4 res = m * v;
// expected output: vec(8.0, 4.0, 0.0, 1.0)
std::cout << glm::to_string(res) << std::endl;

如果您仍然没有在自己的代码中获得预期结果,我建议检查输入值,并且未能通过检查您的GLM版本没有已知问题。

也许您的输入数据无效?您可以显示输入数据