我的 3D 项目中有一个相机,我试图沿着 z 轴平移整个世界。相机位于 (0.0, 50.0, -75.0),目标为 (0.0, 1.0, 0.0)。我只是想让相机从第一个位置移动到 (0.0, 50.0, 75.0) 的对面。
在我的构造函数中,我初始化了相机位置、目标和向上 vector 。
_camPos = glm::vec3(0.0f, 50.0f, -75.0f);
_target = glm::vec3(0.0f, 1.0f, 0.0f);
_up = glm::vec3(0.0f, 1.0f, 0.0f);
在我的 OnInit 函数中:
_viewMatrix = glm::lookAt(_camPos, _target, _up); // glm::mat4 _viewMatrix
在我的 OnRender 函数中:
_camPos.z += 0.05f;
相机的位置更新,但在视觉上,相机停留在同一个位置。 我的场景中确实有正在 OnRender 中更新的移动对象,但相机本身不会移动。
最佳答案
只是在每帧渲染函数中更新您的 _camPos.z
不会做任何事情。您还必须更新 View 矩阵。将 _viewMatrix = glm::lookAt(_camPos, _target, _up);
移动到渲染函数中,您可能会看到一些结果。
关于c++ - 相机不会移动,但坐标正在更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23379455/