基于QT5的OpenGL学习--创建窗口

基于QT5的OpenGL学习–创建窗口

在使用OpenGL渲染出出色的3D效果之前,首先需要创建OpenGL上下文(context)和一个用于显示的窗口,而OpenGL并没有提供创建窗口的API,这意味着我们需要自己创建窗口。

为了方便使用,QT对OpenGL进行了封装,提供了QOpenGLWindow和QOpenGLWidget类,可以直接创建窗口。

  1. 新建工程
    基于QT5的OpenGL学习--创建窗口_第1张图片

此处选择控制台应用程序,之后下一步完成就行了。

  1. 修改pro文件
# 添加gui库
QT += core gui
#QT -= gui

CONFIG += c++11

TARGET = TextureTest
# 取消控制台
#CONFIG += console
CONFIG -= app_bundle
  1. 添加窗口类

右键项目名称–>添加新文件–>c++class,手动添加基类QOpenGLWindow,完成。

此处我的类名为CTextureWindow。

在CTextureWindow中必须实现三个虚函数。

TextureWindow.h文件:

#ifndef TEXTUREWINDOW_H
#define TEXTUREWINDOW_H

#include 
#include 

class CTextureWindow : public QOpenGLWindow,
                       public QOpenGLFunctions
{
    Q_OBJECT
public:
    CTextureWindow();
    
public:
    // 重载
    void initializeGL();  // 初始化OpenGL上下文
    void resizeGL();  // 改变窗口大小时调用
    void paintGL();  // 绘制,相当于MFC的OnPaint函数
};

#endif // TEXTUREWINDOW_H

TextureWindow.cpp文件:

#include "TextureWindow.h"

CTextureWindow::CTextureWindow()
{

}

void CTextureWindow::initializeGL()
{
    // 1. 初始化OpenGL上下文
    initializeOpenGLFunctions();

    // 2. 设置擦除颜色
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}

void CTextureWindow::resizeGL()
{
    // pass
}

void CTextureWindow::paintGL()
{
    // 1. 清空颜色缓冲区
    glClear(GL_COLOR_BUFFER_BIT);
}
  1. 创建窗口

main.cpp文件:

#include     // 修改头文件,改为Gui
#include "TextureWindow.h"

int main(int argc, char *argv[])
{
    QGuiApplication a(argc, argv);  // 修改为Gui应用程序

    // 设置OpenGL版本信息
    // format必须在show之前被调用
    QSurfaceFormat format;
    format.setRenderableType(QSurfaceFormat::OpenGL);
    format.setProfile(QSurfaceFormat::CoreProfile);
    format.setVersion(3,3);
    
    // 创建窗口
    CTextureWindow w;
    w.setFormat(format);
    w.resize(QSize(800, 600));
    w.show();

    return a.exec();
}

至此,窗口创建完毕,运行效果如下:
基于QT5的OpenGL学习--创建窗口_第2张图片
如果觉得对您由帮助的话,请扫码关注,谢谢!

基于QT5的OpenGL学习--创建窗口_第3张图片

你可能感兴趣的:(Qt5,OpenGL)