首页 > 其他分享 >Qt+OpengGL使用教程(1)

Qt+OpengGL使用教程(1)

时间:2023-03-20 09:55:06浏览次数:43  
标签:GLWidget 教程 Qt format int void OpengGL 缓冲区 include

首先,建议阅读和Qt OpenGL相关的类。本人对其中的一些类,做了一些翻译,例如:QOpenGLWidget。

环境:Ubuntu16.04, Qt 5.14.2

首先,新建立一个工程qtopengltest,使用ui designer,拖动一个widget到界面上,命名为glwidget。

根据文档,我们要建立一个继承自QOpenGLWidget和QOpenGLFunctions的子类GLWidget,并重新实现paintGL(), resizeGL(), initializeGL()这三个虚函数。

目前的代码如下:

// main.cpp
#include "mainwindow.h"
#include <QSurfaceFormat>
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QSurfaceFormat format;
    format.setDepthBufferSize(24);
    format.setStencilBufferSize(8);
    format.setVersion(3, 2);
    format.setProfile(QSurfaceFormat::CoreProfile);
    QSurfaceFormat::setDefaultFormat(format);

    MainWindow w;
    w.show();
    return a.exec();
}


//glwidget.h
#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QOpenGLWidget>
#include <QOpenGLExtraFunctions>

class GLWidget : public QOpenGLWidget, protected QOpenGLFunctions
{
public:
    explicit GLWidget(QWidget *parent = nullptr);
    ~GLWidget();
protected:
    void resizeGL(int w, int h) override;
    void initializeGL() override;
    void paintGL() override;
};

#endif // GLWIDGET_H

//glwidget.cpp
#include "glwidget.h"

GLWidget::GLWidget(QWidget *parent) : QOpenGLWidget(parent)
{

}

GLWidget::~GLWidget()
{

}

void GLWidget::resizeGL(int w, int h)
{

}

void GLWidget::initializeGL()
{

}


void GLWidget::paintGL()
{

}

 我们将界面上的glwidget控件提升为GLWidget.

此时我们运行程序,便会得到一个黑色背景的QOpenglWidget.

initializeGL()中首先需要调用initializeOpenGLFunctions();来为当前上下文初始化OpenGL函数,即将opengl函数的上下文对象设置为当前上下文。然后将清屏颜色设置为我们想要的颜色,启用深度测试和颜色缓冲区。

paintGL()函数中,我们通过glClear函数清空颜色缓冲区和深度缓冲区,然后再进行图形的绘制。

此时,代码如下:

void GLWidget::initializeGL()
{
    initializeOpenGLFunctions();
    // 设置清屏颜色为黑色
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

    // 启用深度测试
    glEnable(GL_DEPTH_TEST);

    // 启用颜色缓冲区
    glEnable(GL_COLOR_BUFFER_BIT);

}

void GLWidget::paintGL()
{
    // 清空颜色缓冲区和深度缓冲区
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    // 绘制图形
    // ...
}

 

接下来,绘制一个2D三角形。

 

标签:GLWidget,教程,Qt,format,int,void,OpengGL,缓冲区,include
From: https://www.cnblogs.com/errorman/p/17222596.html

相关文章

  • 自己动手从零写桌面操作系统GrapeOS系列教程——19.硬盘读写理论知识
    学习操作系统原理最好的方法是自己写一个简单的操作系统。一、硬盘控制器我们前面已经讲过硬盘控制器是一种I/O接口,CPU通过它就能间接的读写硬盘。硬盘控制器主要有ID......
  • Qt 计算字符串和文件的md5 值
    chatgpt结果string#include<QCryptographicHash>#include<QDebug>QStringstring="Hello,World!";QByteArraydata=string.toUtf8();QByteArrayhash=QCry......
  • Qt Tcp Server
    chatgpt结果head//TcpServerBase.h#ifndefTCPSERVER_H#defineTCPSERVER_H#include<QObject>#include<QTcpServer>#include<QTcpSocket>classTcpServerBa......
  • Vue2入门之超详细教程四-数据绑定
    1、简介数据绑定分为单向数据绑定和双向数据绑定,上一章节中出现的v-bind就属于单向数据绑定。单向绑定(v-bind):数据只能从data流向页面双向绑定(v-model):数据不仅......
  • MySQL下载安装教程
    下载  https://www.mysql.com/downloads/     ......
  • JQuery教程
    JQuery教程一、简介概述jQuery是一套兼容多浏览器的javascript脚本库.。核心理念是写得更少,做得更多,使用jQuery将极大的提高编写javascript代码的效率,帮助开发......
  • Bootstrap教程
    Bootstrap教程一、简介概述Bootstrap是一套现成的CSS样式集合(做得还是很友好的)。是两个推特的员工干出来的。Bootstrap是最受欢迎的HTML、CSS和JS框架,用于开发......
  • DaVinci_Resolve_Studio_18.1.1达芬奇图文安装教程及下载
       ​ DaVinciResolve最大的特点是,将剪辑、调色、视觉特效、动态图形和音频后期制作融于一身,它采用美观新颖的界面设计,易学易用,能让新手用户快速上手操作,还能提供专......
  • Qt音视频开发26-监控画面各种图形绘制设计
    一、前言视频监控系统做到后面,逐渐需要搭配人工智能算法,将算法计算后的信息以OSD标签以及方框各种图形的信息显示到视频中,这种当然和OSD一样也是有两种方式,一种是源头就贴......
  • SPSS 24 中文破解版安装包下载及图文安装教程​
    SPSS是一款由IBM公司精心打造的专业统计分析软件,它能提供统计分析、数据挖掘、预测建模产品及解决方案,并提供高级统计分析、丰富的机器学习算法、文本分析、开源扩展性、与......