首先Qt是一个非常强大的应用程序开发框架,它自己提供了OpenGL的模块,不需要配置环境即可直接使用~其次对GLSL也有支持,真的是非常厉害!!!
我们新建一个Qt项目,选择Qt Widgets Application
给项目起一个好玩的名字~
下一步->下一步->选择QWidget(因为我比较常用Widget,它没有QMainWindow的小刘海hhh)
然后完成~
我们接着呢,更改pro文件,加一句
QT += opengl
修改完pro文件,我们在.h文件中做下列修改:
引入三个比较常用的头文件,然后将Widget的父类改为QGLWidget
接着我们需要继承三个虚函数,分别用于初始化、绘制和窗口刷新的时候的重置函数
然后到.cpp文件中实现这三个函数,并修改构造函数所继承的父类名称
构造函数:
Widget::Widget(QWidget *parent) :
QGLWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
三个重要的函数:
void Widget::initializeGL()
{
//设置widget的坐标和尺寸
setGeometry(300, 150, 500, 500);
//设置清除时颜色
glClearColor(0.0, 0.0, 0.0, 0);
}
void Widget::resizeGL(int w, int h)
{
//视口变换
glViewport(0,0,(GLsizei)w,(GLsizei)h);
//投影变换
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(40.0,(GLdouble)w/(GLdouble)h,0.1,10000.0);
//视图变换
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0,0.0,15.0,0.0,0.0,0.0,0.0,1.0,0.0);
}
void Widget::paintGL()
{
//清屏
glClear(GL_COLOR_BUFFER_BIT);
//绘制七彩三角形
glBegin(GL_TRIANGLES);
glColor3f(1.0,0.0,0.0);
glVertex3f(-2,0,0);
glColor3f(0.0,1.0,0.0);
glVertex3f(2,0,0);
glColor3f(0.0,0.0,1.0);
glVertex3f(0,4,0);
glEnd();
glFlush();
}代码中简单示例了一个好看的三角形的绘制~编译后就可以运行啦~~~