我现在正在学习 OpenGL,特别是如何移动相机。如果我想改变我的相机矩阵,例如,如果用户使用 WASD 进行翻译,我可以通过两种主要方式来做到这一点:
- 将相机矩阵预乘以新的平移矩阵。
- 管理相机的一组属性,例如位置、视角、向上矢量,修改这些属性,并根据这些属性重新计算相机矩阵。
其中哪个被认为更好?我觉得第一个会引入漂移,第二个会需要更多的计算,但我知道的不够多,无法分析这两者。
为相机建模的最简单方法之一是使用“lookAt”系统。基本上你记得camera_pos
, camera_target
, 可选的camera_up
向量。gluLookAt
然后你使用旧的或一些现代的方式来构建最终矩阵,比如glm::lookAt
.
这样就更容易对相机及其参数进行建模。
这里有一些链接:
不要太看重性能成本。首先学习一些东西,构建它......然后在需要时进行优化。