C++ 如何使用Glut使摄影机在OpenGL中的对象中飞行?

C++ 如何使用Glut使摄影机在OpenGL中的对象中飞行?,c++,windows,opengl,glut,C++,Windows,Opengl,Glut,首先,我所有的代码都可以在这里找到,它在3个文件中 , 好的。。。所以,如果你运行它,它似乎工作,但有一些事情真的困扰着我 相机在一个奇怪的位置启动,我试图改变各种变量,但似乎没有效果 现在最大的问题是移动摄像机。此时此刻。。。相机将左右移动,但不会向前或向后移动。当我尝试向前移动时,就像像素在做正确的事情一样,当我向前移动时,对象最终会消失,就像我经过它一样,但当我靠近它时,对象本身并没有“看起来更大”。向后移动也一样 如果你能想出什么办法,请告诉我 我想补充一点,这段代码的大部分来自我的教科

首先,我所有的代码都可以在这里找到,它在3个文件中

,

好的。。。所以,如果你运行它,它似乎工作,但有一些事情真的困扰着我

相机在一个奇怪的位置启动,我试图改变各种变量,但似乎没有效果

现在最大的问题是移动摄像机。此时此刻。。。相机将左右移动,但不会向前或向后移动。当我尝试向前移动时,就像像素在做正确的事情一样,当我向前移动时,对象最终会消失,就像我经过它一样,但当我靠近它时,对象本身并没有“看起来更大”。向后移动也一样

如果你能想出什么办法,请告诉我

我想补充一点,这段代码的大部分来自我的教科书。我自己修改过


谢谢

在不尝试计算轴的情况下,您是否尝试过沿Z轴而不是Y轴前后移动相机。可能深度轴设置为Z而不是Y轴。

在不尝试计算轴的情况下,您是否尝试过沿Z轴而不是Y轴前后移动摄影机。可能深度轴设置为Z而不是Y轴。

它是正交摄影机,因此无法沿Z轴移动。你需要改变你的相机类型来做你想做的事情

参考:第33行,flythrough.cpp

glOrtho(-2.0 * 64 / 48.0, 2.0 * 64 / 48.0, -2.0, 2.0, 100, 100.0);
通常,只需取消对此行的注释,然后编写以下内容:

gluPerspective(60.0, 640.0 / 480.0, 0.1, 1000.0);
这将用当前加载的标识矩阵(LoadIdentity())乘以透视矩阵


Ref:

它是一个正交摄影机,因此不能沿Z轴移动。你需要改变你的相机类型来做你想做的事情

参考:第33行,flythrough.cpp

glOrtho(-2.0 * 64 / 48.0, 2.0 * 64 / 48.0, -2.0, 2.0, 100, 100.0);
通常,只需取消对此行的注释,然后编写以下内容:

gluPerspective(60.0, 640.0 / 480.0, 0.1, 1000.0);
这将用当前加载的标识矩阵(LoadIdentity())乘以透视矩阵


Ref:

我还没有看过代码,但它不是正交摄影机,对吗?我对OpenGL完全陌生,恐怕我不知道你的意思。我的意思正是丹尼尔所说的。我很高兴你能给他一个公认的答案!:)我还没看过代码,但它不是正交摄影机,对吗?我对OpenGL完全陌生,恐怕我不知道你的意思。我的意思正是丹尼尔所说的。我很高兴你能给他一个公认的答案!:)如果您指的是:“myCamera.slide(0,-操纵器,0);”是的,我尝试过“myCamera.slide(0,0,-操纵器);”,但它会向上移动相机,而不是向前或向后移动。如果您指的是:“myCamera.slide(0,-操纵器,0);”是的,我尝试过“myCamera.slide(0,0,-操纵器);”,但它会向上移动相机,不要向前或向后。谢谢你给我指出了正确的方向。你知道应该换成什么吗?我还在学习语法和结构。谢谢!我要试一试!编辑:现在,我还注意到在support.cpp中,在Camera::setProjectionMatrix中,我确实使用了gluPerspective。好的,加上你所说的有效,我取得了比以前更多的进展。尽管如此,它似乎仍然没有达到预期的效果。似乎所有的东西都围绕着一个点或是一些奇怪的东西移动。我感谢你的帮助!是的,该函数包含您想要的内容,而不是glOrtho行(注释/删除它),放置Camera::setProjectionMatrix()。但是您发布的粘贴中的这些行当前已被注释掉。是否定义围绕单个点移动?您的代码包含多个glRotated(…)函数。我建议你从更简单的事情开始,一次一个地构建这个例子,而不是一次构建所有的例子,并试图找出你的世界为什么会旋转:)谢谢你为我指明了正确的方向。你知道应该换成什么吗?我还在学习语法和结构。谢谢!我要试一试!编辑:现在,我还注意到在support.cpp中,在Camera::setProjectionMatrix中,我确实使用了gluPerspective。好的,加上你所说的有效,我取得了比以前更多的进展。尽管如此,它似乎仍然没有达到预期的效果。似乎所有的东西都围绕着一个点或是一些奇怪的东西移动。我感谢你的帮助!是的,该函数包含您想要的内容,而不是glOrtho行(注释/删除它),放置Camera::setProjectionMatrix()。但是您发布的粘贴中的这些行当前已被注释掉。是否定义围绕单个点移动?您的代码包含多个glRotated(…)函数。我建议你从简单的事情开始,一次构建一个例子,而不是一次构建所有的例子,并试图找出你的世界为什么会旋转:)