QT5.7中使用OpenGL开发记录(一)---- 第一个工程

QT5.7中使用OpenGL开发记录(一)

    前言:最近在做一个项目,需要使用QT结合OpenGL进行开发。由于原来没有怎么用过OpenGL,只知道是个开源图形库,所以先在网上查询了一些资料,发现QT5.5以上版本已经集成了OpenGL,不过和纯OpenGL的使用有些区别,而且相关资料较少。为了便于后续开发并且方便大家共同学习,这里将我的学习过程进行记录(本博客内容只记录了本人的学习过程,不保证完整性和准确性,如想系统学习请绕行。)。由于本人图形开发经验较少,如有错漏敬请指出。

使用QT开发OpenGL的准备工作

    QT的下载和安装与大部分软件类似,官网上有付费版和开源版两个版本,建议从官网下载。具体下载及安装方式网上大量教程,不赘述。这里强调一下QT可以在Windows、Linux等多平台下使用,具有较好的移植性。Windows下QT使用的C++编译器主要有两种,一个是与Visual Studio 相同的编译器,另一个是MinGW,下载安装时需要注意选择,当然,也可以安装好后自己配编译器。为了方便移植到linux,我使用的是MinGW编译器。
    QT安装好后按照一般的流程建立桌面应用工程就可以了,不需要在工程文件(*.pro)中引入任何库文件就可以使用QT中集成的OpenGL了。

第一个OpenGL工程

1. QT中新建一个工程,命名为StudyOpenGL,工程结构图如下图所示:
StudyOpenGL工程目录图
    其中,StudyOpenGL.pro为工程文件,mainwindow.h、mainwindow.cpp和mainwindow.ui为主窗口界面文件,main为主函数所在文件。


2.新建一个窗口类命名为:OpenGLWidget,注意勾选include QWidget,新建好的类需要公有继承QOpenGLWidget类,保护继承QOpenGLFunctions(别问为什么….-.-!),并且重写函数initializeGL、paintGL和resizeGL。

#ifndef OPENGLWIDGET_H
#define OPENGLWIDGET_H

#include <QWidget>
#include <QOpenGLWidget>
#include <QOpenGLFunctions>

class OpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions
{
public:
    explicit OpenGLWidget(QWidget *parent = 0);

protected:
    void initializeGL();
    void paintGL();
    void resizeGL(int w, int h);
};

#endif // OPENGLWIDGET_H



3. 实现initializeGL、paintGL和resizeGL三个函数

void OpenGLWidget::initializeGL()
{
    //调用内容初始化函数
    initializeOpenGLFunctions();
}
void OpenGLWidget::resizeGL(int w, int h)
{
    //当窗口大小改变时,调整界面坐标显示高度和宽度
    glViewport(0, 0, w, h);
}
void OpenGLWidget::paintGL()
{
    //清除之前图形并将背景设置为黑色(设置为黑色纯粹个人爱好!)
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}


4. 在mainwindows中添加OpenGLWidget

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    OpenGLWidget* openGLWidget = new OpenGLWidget();
    //为了便于让OpenGLWidget自动填充父窗口,这里为父窗口设置了一个布局
    QVBoxLayout* centralLayout = new QVBoxLayout();
    centralLayout->addWidget(openGLWidget);
    this->ui->centralWidget->setLayout(centralLayout);
}



5. 运行程序就可以看到界面中间有一块黑色的区域,接下来就可以添加OpenGL的图像了。运行效果如下图所示:
运行结果


    通过上述步骤我们已经创建了一个最简单的OpenGL界面,后续将基于这个界面进行图形绘制。(不定期更新)

  • 12
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值