OpenGL中的最小图元是三角形,两个三角形组合便构成了正方形,空间中的六个正方形首尾组合便构成了正方体。在正方形表面贴上纹理便构成了带纹理的正方体。程序中通过添加定时器定时改变纹理的组合和正方体的位置便得到了旋转变化的立方体。通过引入按键事件可以通过外部输入改变相机位置。程序中通过wsad键来调整相机的位置。
立方体变化的程序源码如下:
opengl.h
#ifndef OPENGL_H
#define OPENGL_H
#include <QtWidgets/QWidget>
#include <QtOpenGL/QGLWidget>
#include <QtOpenGL/QGLFunctions>
#include <QtOpenGL\QGLShader>
#include <QtOpenGL\QGLBuffer>
#include <QtOpenGL\QGLShaderProgram>
#include <QKeyEvent>
#include <QTimer>
class openGL : public QGLWidget, protected QGLFunctions
{
Q_OBJECT
public:
openGL(QWidget *parent = 0);
~openGL();
protected:
void initializeGL(); //初始化OpenGL
void resizeGL(int w, int h); //调整oeenGL的显示窗口
void paintGL(); //绘制opengl图像
void keyPressEvent(QKeyEvent *e);//按键响应事件
private:
void InitShader();
void InitBuffer();
private:
QGLShaderProgram shader;