如何使用Glut使相机在OpenGL中飞过对象?

时间:2011-02-16 05:07:41

标签: c++ windows opengl glut

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

flythrough.cppsupport.cppsupport.h

好吧......所以,如果你运行它,似乎有效,但有些事情真的让我烦恼!

相机在一个奇怪的位置开始,我尝试改变各种变量,但它似乎没有效果。

目前最大的问题是移动相机。此时......相机将左右移动,但不能向前或向后移动。当我试图向前移动时,就像像素正在做正确的事情一样,当我向前移动时,物体最终会消失,就像我已经移过它一样,但是当我靠近时,物体本身并没有“显得更大”。向后移动也一样。

如果你能拿出任何东西,请告诉我。

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

谢谢!

2 个答案:

答案 0 :(得分:4)

它是一个正交相机,因此你无法沿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())。

参考:http://www.opengl.org/sdk/docs/man/xhtml/gluPerspective.xml

答案 1 :(得分:0)

如果不尝试计算轴,您是否尝试沿Z轴向前和向后移动相机而不是Y.也许您的深度轴设置为Z而不是Y.