基本概念

Qt提供了OpenGL模块,在Qt应用程序中使用OpenGL相对比较方便。OpenGL是一种跨平台的3D图形API,可以用于创建各种类型的3D图形应用程序,如游戏、虚拟现实、数据可视化等。在Qt中,可以使用QOpenGLWidget类来创建一个OpenGL窗口,在这个窗口中,可以使用OpenGL API来绘制3D图形。同时,Qt还提供了QOpenGLFunctions类来封装OpenGL的各种函数,使用起来更加方便。除此之外,Qt还提供了QOpenGLVertexArrayObject、QOpenGLBuffer等类来管理OpenGL中的顶点数组和缓冲区对象。使用Qt开发OpenGL应用程序,既可以发挥Qt的强大功能,也可以充分利用OpenGL的性能优势。

1、着色器


【资料图】

GPU由大量的小型可编程处理器(shader core)组成,这些迷你的处理器上运行的迷你程序成为着色器。

2、管线

这是一个形象的说法,把 OpenGL 的模型比作一个生产线。

该模型内的数据流通常是单一路径的,程序发送给 OpenGL 的处理指令形成的数据进管线的开端,然后流经一个个阶段直到管线的末端。

3、基元

OpenGL 中的基本渲染单元。包括点、线、三角形(分别有一、二、三个点)。

我们在屏幕上看到的渲染的所有的东西都是这三种基元的集合。

4、顶点

(三维)坐标空间内的一个点,点、线、三角形分别有一、二、三个顶点。

5、光栅器

用作将三维形式的三角形转成一系列在屏幕渲染的像素的硬件。

6、管线前端的工作

处理顶点和基元,将图形处理后把它们组成的点、线、三角形传递给光栅器。

7、管线后端的工作

光栅器处理之后得到的是像素,管线后端处理这些像素,包括深度参数、模板测试、片段着色、混合、更新输出图像。

第一个 OpenGL 程序

#ifndef OPENGLWIDGET_H#define OPENGLWIDGET_H#include class openglWidget : public QOpenGLWidget{Q_OBJECTpublic:openglWidget(QWidget * parent = nullptr);protected:virtual void paintGL();};#endif // OPENGLWIDGET_H#include \"openglwidget.h\"#include openglWidget::openglWidget(QWidget *parent):QOpenGLWidget(parent){}void openglWidget::paintGL(){static const GLfloat red[] = {1.0f,0.0f,0.0f,1.0f};//RGBAQOpenGLExtraFunctions * funs = QOpenGLContext::currentContext()->extraFunctions();funs->glClearBufferfv(GL_COLOR,0,red);}//领取Qt开发学习资料加Q群:487707667

OpenGL 的函数命名遵循一些约定。所有函数以 gl 开头,本例中,后缀 fv 表示该函数使用一组向量(v)、浮点(f) 值。

glClearBufferfv():清除当前绑定的绘制帧缓冲区的各个缓冲区。

Qt OpenGL是一个基于OpenGL图形库的Qt模块,它提供了一组类和函数,使开发人员能够在Qt应用程序中使用OpenGL渲染3D场景。Qt OpenGL通过将OpenGL与Qt的UI框架集成在一起,为开发人员提供了更多灵活性和可扩展性。

使用Qt OpenGL,开发人员可以轻松地创建具有吸引力和高度交互性的3D应用程序。它还提供了许多方便的功能,如支持纹理映射、光照效果、阴影处理等。此外,Qt OpenGL还可以帮助开发人员解决跨平台问题,因为它可以在多个操作系统上运行,并且与其他平台无关的代码保持兼容。

【领 QT开发教程 学习资料, 点击下方链接莬费领取↓↓ ,先码住不迷路~】

点击这里:

关键词: