繁体   English   中英

为什么glm不能转换顶点

[英]Why glm does not translate vertex

我正在尝试使用glm使用矩阵变换转换顶点。

但看起来,我做错了什么。 我试图改变v m和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版本是否存在已知问题。

也许您的输入数据无效? 你能显示输入数据吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM