第07课:光照和键盘控制 (参照NeHe)
这次教程中,我们将添加光照和键盘控制,它让程序看起来更美观。我将教大家如何使用键盘来移动场景中的对象,还会教大家在OpenGL场景中应用简单的光照,让我们的程序更加视觉效果更好且受我们控制。
程序运行时效果如下:
下面进入教程:
我们这次将在第06课的基础上修改代码,首先打开myglwidget.h文件,将类声明更改如下:
#ifndef MYGLWIDGET_H
#define MYGLWIDGET_H
#include <QWidget>
#include <QGLWidget>
class MyGLWidget : public QGLWidget
{
Q_OBJECT
public:
explicit MyGLWidget(QWidget *parent = 0);
~MyGLWidget();
protected:
//对3个纯虚函数的重定义
void initializeGL();
void resizeGL(int w, int h);
void paintGL();
void keyPressEvent(QKeyEvent *event); //处理键盘按下事件
private:
bool fullscreen; //是否全屏显示
QString m_FileName; //图片的路径及文件名
GLuint m_Texture; //储存一个纹理
bool m_Light; //光源的开/关
GLfloat m_xRot; //x旋转角度
GLfloat m_yRot; //y旋转角度
GLfloat m_xSpeed; //x旋转速度
GLfloat m_ySpeed; //y旋转速度
GLfloat m_Deep; //深入屏幕的距离
};
#endif // MYGLWIDGET_H
增加了一个布尔变量表示光源的开关,剩下的五个浮点变量用于控制对象的旋转角度,旋转速度以及距离屏幕的位置。
接下来,我们需要打开myglwidget.cp