Qt+OpenGL 新手教程——创建一个OpenGL程序

首先Qt是一个非常强大的应用程序开发框架,它自己提供了OpenGL的模块,不需要配置环境即可直接使用~其次对GLSL也有支持,真的是非常厉害!!!

我们新建一个Qt项目,选择Qt Widgets Application

Qt+OpenGL 新手教程——创建一个OpenGL程序_第1张图片

给项目起一个好玩的名字~

Qt+OpenGL 新手教程——创建一个OpenGL程序_第2张图片

下一步->下一步->选择QWidget(因为我比较常用Widget,它没有QMainWindow的小刘海hhh)

Qt+OpenGL 新手教程——创建一个OpenGL程序_第3张图片

然后完成~

我们接着呢,更改pro文件,加一句

QT       += opengl


修改完pro文件,我们在.h文件中做下列修改:

引入三个比较常用的头文件,然后将Widget的父类改为QGLWidget

Qt+OpenGL 新手教程——创建一个OpenGL程序_第4张图片

接着我们需要继承三个虚函数,分别用于初始化、绘制和窗口刷新的时候的重置函数

然后到.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();

}

代码中简单示例了一个好看的三角形的绘制~编译后就可以运行啦~~~

你可能感兴趣的:(OpenGL)