我该如何在三维环境中移动,openGL c++
How would I go about moving in a 3D environment, openGL c++
我不太确定应该如何使用openGL来推动事情的发展。
我应该在3D世界中移动相机的位置,还是移动/平移相机周围的对象?
我在网上读到,相机应该留在原点,其他一切都应该在相机周围移动,但这不是一项密集的操作吗?就像如果我有1000个物体,我在移动,我们就必须移动所有这些物体。移动相机并将世界对象保持在它们所在的位置不是更容易吗?
OpenGL的工作方式是,从概念上讲,相机始终位于中心,Y轴向上,Z轴向前。如果你想移动或旋转相机,你实际上会以相反的方式移动其他所有东西。
这与Direct3D相反,例如,Direct3D中有一个单独的摄影机矩阵。
这只是一个小细节,因为从数学上讲,它们完全相同。无论你是向前移动还是向后移动相机,最终结果都是完全一样的。你甚至可以说,只有一个矩阵,而不是把两个矩阵相乘是一种性能增益,但这非常小,通常你会把相机矩阵和世界构建矩阵分开。
在Opengl中,相机始终位于眼睛空间坐标(0.,0.,0.)处。要呈现移动相机的外观,Opengl应用程序必须使用相机变换的逆方向移动场景。
您不需要担心在场景中移动/平移对象。gluLookAt()
函数为您执行此操作。此函数根据参数计算相机逆变换,并将其乘以当前矩阵堆栈。
相关文章:
- 使用 C++在 OpenGL 中移动自动旋转的 3D 多边形
- 按时间自动旋转形状,同时在 OpenGL 中使用C++移动它们
- 在 OpenGL 中使用键盘移动 3D 形状,C++
- OpenGL 相机移动程序顶点着色器问题
- OpenGL:在那个方向上旋转和移动
- OpenGL:当我移动相机时,它会向侧面倾斜
- OpenGL - 每次单击菜单时移动的对象
- OpenGL沿方向矢量移动播放器
- 在OpenGL中,如何将鼠标跟随更改为鼠标单击,拖动并移动释放?
- OpenGL纹理闪烁/有时在窗口大小上移动
- OpenGL - 让相机移动
- 将 OpenGL 实例化图形与移动对象一起使用
- 在Qt5的OpenGL绘图中通过鼠标移动计算对象旋转角度
- OpenGL-在倾斜的桌面上移动球
- OpenGL - 为什么我的球不移动?
- OpenGL 对象在移动一段距离后振动
- OpenGL多立方体,旋转,移动
- OpenGL 移动对象不起作用
- 在OpenGL中移动一个简单的形状(形状在数据结构中)
- 带有OpenGL和嵌入式WebViews的本机移动应用程序(iOS/Android)的测试框架