c++ - 相机不会移动,但坐标正在更新

标签 c++ opengl camera

我的 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/

相关文章:

c++ - 如何在 C++ 中刷新重定向的标准输出

opengl - OpenGL 中的线框

opengl - 稳健且灵活的 3D 数据结构

android - 为什么我使用相机传递结果 ResultInfo 失败?

c++ - 快速生成变量嵌套for循环的数字组合

c++ - 使用调试版本在 C API 上调用 delete 到 C++ 接口(interface)段错误

c++ - 如何在C++下链接一个库文件?

c++ - 在 OpenGL C++ 中绘制一个球和两个圆锥体

opencv - 优化多个相机的立体校准过程

ios - 如何强制用户在拍照时使用 "square"相机滤镜