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++ - 如何停止控制台应用程序中的闪烁?

c++ - FFmpeg C++ 在单独的线程中解码

opengl - 为什么我们需要透视划分?

c++ - 提高 Basler 相机的 fps

iOS 拍照并保存在应用程序中

c++ - Qt 插槽参数已损坏

c++ - glsl着色器传递和渲染纹理

opencv - 为什么 camera_calibration.cpp 教程代码不能从我的相机中正确读取?

java - 使用 JOGL(Java OpenGL)