7.4 使用 Qt 与 OpenGL 开发图形应用
Qt 提供了强大的 OpenGL 支持,允许开发者结合 Qt 的界面功能和 OpenGL 的高性能图形处理能力,创建复杂的 3D 应用和高效的绘图程序。Qt 的 OpenGL 支持主要通过 QOpenGLWidget
、QOpenGLFunctions
和 QOpenGLShaderProgram
等类实现。
一、Qt 与 OpenGL 的基本概念
OpenGL 是一个跨平台的图形库,用于绘制 2D 和 3D 图形。Qt 的 OpenGL 集成简化了其在应用程序中的使用。
核心类:
-
QOpenGLWidget
:- 用于在 Qt 应用中嵌入 OpenGL 内容。
- 替代了早期的
QGLWidget
,更符合现代 OpenGL 的使用方式。
-
QOpenGLFunctions
:- 提供了一组跨平台的 OpenGL 函数封装,避免直接调用平台相关的 OpenGL 函数。
-
QOpenGLShaderProgram
:- 用于加载和管理 OpenGL 着色器程序。
- 支持顶点着色器、片段着色器和几何着色器。
二、QOpenGLWidget 的使用
QOpenGLWidget
是 OpenGL 绘图的核心组件,用于嵌入 OpenGL 内容并处理绘制逻辑。
主要生命周期方法:
-
initializeGL()
:- 在 OpenGL 上下文初始化时调用,用于设置 OpenGL 环境和资源。
-
resizeGL(int w, int h)
:- 在窗口大小改变时调用,用于调整视口等。
-
paintGL()
:- 在需要绘制时调用,用于渲染图形内容。
示例:基本的 OpenGL 绘制
#include <QOpenGLWidget>
#include <QOpenGLFunctions>
class MyOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions {
protected:
void initializeGL() override {
initializeOpenGLFunctions();
glClearColor(