【问题标题】:glm rotate and translationglm 旋转和平移
【发布时间】:2026-01-16 23:15:02
【问题描述】:

我有一个名为modelmat4。我希望我的立方体围绕一个位置运行。我可以很好地调用glm::rotate(mat4, angle, vec3) 并让它在原点旋转。

void Object::Update(unsigned int dt)
{
  angle += dt * M_PI/1000;
  model = glm::rotate(glm::mat4(1.0f), (angle), glm::vec3(0.0, 1.0, 0.0));
  model = glm::translate(glm::mat4(1.0f), glm::vec3(0.5f, -0.5f, 0.0f));
}

不幸的是,当我在旋转后添加glm::translate 调用时,我的立方体被冻结了。我缺少一些基本的东西吗?

【问题讨论】:

    标签: c++ opengl glm-math


    【解决方案1】:

    您必须将旋转结果作为初始矩阵传递给它:model = glm::translate(model, glm::vec3(0.5f, -0.5f, 0.0f));。否则,您将重置和转换身份矩阵,这将完全覆盖您的旋转。

    【讨论】: