基本概念
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开发教程 学习资料, 点击下方链接莬费领取↓↓ ,先码住不迷路~】
点击这里:
关键词: