QT5.7中使用OpenGL开发记录(一)---- 第一个工程
2017-12-29 16:31
489 查看
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.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界面,后续将基于这个界面进行图形绘制。(不定期更新)
相关文章推荐
- QT5.7中使用OpenGL开发记录(二)---- 绘制三角形
- 【神经网络与深度学习】【Qt开发】【VS开发】从caffe-windows-visual studio2013到Qt5.7使用caffemodel进行分类的移植过程<二>
- Linux 下 Qt Creator 的安装,并使用它开发你的第一个 Qt 项目全过程
- Linux 下 Qt Creator 的安装,并使用它开发你的第一个 Qt 项目全过程
- 使用VS2010开发Qt程序的4点经验(QT4到QT5的升级,更改sln文件,切换工程使用的Qt库,在VS的Solution Explorer视图中建立文件夹)
- Fedora 中使用 Qt开发 记录
- OpenGL学习笔记(七):创建第一个Qt5.9.3 OpenGL工程模版(与平台无关)
- Qt5.7以及5.8在cmake工程中使用C++14编译遇到的问题及解决方案
- Linux 下 Qt Creator 的安装,并使用它开发你的第一个 Qt 项目全过程
- 使用Xcode编写Qt工程(生成开发Qt的Xcode工程)
- Linux 下 Qt Creator 的安装,并使用它开发你的第一个 Qt 项目全过程
- 【神经网络与深度学习】【Qt开发】【VS开发】从caffe-windows-visual studio2013到Qt5.7使用caffemodel进行分类的移植过程
- Linux 下 Qt Creator 的安装,并使用它开发你的第一个 Qt 项目全过程
- IOS 初级开发入门教程(二)第一个HelloWorld工程及StoryBoard使用
- C++ gui QT4 OPENGL 开发3
- 【转】如何在windows平台开发OpenGL程序使用OpenGL1.2或更高版本
- [转]在Qt工程文件中根据不同版本号使用不同源码
- 使用Visual Studio .NET开发Qt程序
- OpenOffice Calc开发(C++) 5 第一个工程SpreadSheetTest
- 在Qt工程文件中根据不同版本号使用不同源码