OpenGL(2)基于Qt做OpenGL开发
- 开源代码
- 2025-08-22 20:57:04

文章目录 一、基于Qt做OpenGL开发1、环境准备2、创建OpenGL窗口3、绘制基本图形 一、基于Qt做OpenGL开发 1、环境准备
确保你已经安装了 Qt 开发环境(包含 Qt Creator),并且支持 OpenGL 开发。在创建 Qt 项目时,选择 “Qt Widgets Application” 或 “Qt Quick Application”,根据项目需求进行选择。
2、创建OpenGL窗口在 Qt 中,可以通过继承 QOpenGLWidget 和 QOpenGLFunctions_x_x_Core 类来创建一个 OpenGL 窗口。以下是一个简单的示例:
#include <QApplication> #include <QOpenGLWidget> #include <QOpenGLFunctions> class OpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions_4_5_Core { public: OpenGLWidget(QWidget *parent = nullptr) : QOpenGLWidget(parent) {} protected: // 初始化 OpenGL 上下文 void initializeGL() override { initializeOpenGLFunctions(); glClearColor(0.2f, 0.3f, 0.3f, 1.0f); } // 绘制 OpenGL 场景 void paintGL() override { glClear(GL_COLOR_BUFFER_BIT); } // 处理窗口大小变化 void resizeGL(int width, int height) override { glViewport(0, 0, width, height); } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); OpenGLWidget w; w.show(); return a.exec(); }代码解释
initializeGL 函数:在这个函数中,我们调用 initializeOpenGLFunctions() 来初始化 OpenGL 函数,然后使用 glClearColor 设置清屏颜色。paintGL 函数:这是绘制 OpenGL 场景的主要函数,在这个函数中,我们使用 glClear 函数清除颜色缓冲区。resizeGL 函数:当窗口大小发生变化时,这个函数会被调用,我们使用 glViewport 函数设置视口大小。 3、绘制基本图形下面我们在 paintGL 函数中绘制一个简单的三角形:
#include <QApplication> #include <QOpenGLWidget> #include <QOpenGLFunctions> class OpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions_4_5_Core { public: OpenGLWidget(QWidget *parent = nullptr) : QOpenGLWidget(parent) {} protected: void initializeGL() override { initializeOpenGLFunctions(); glClearColor(0.2f, 0.3f, 0.3f, 1.0f); } void paintGL() override { glClear(GL_COLOR_BUFFER_BIT); // 启用顶点属性 glEnableClientState(GL_VERTEX_ARRAY); // 定义三角形的顶点坐标 GLfloat vertices[] = { -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, 0.5f, 0.0f }; // 设置顶点指针 glVertexPointer(3, GL_FLOAT, 0, vertices); // 绘制三角形 glDrawArrays(GL_TRIANGLES, 0, 3); // 禁用顶点属性 glDisableClientState(GL_VERTEX_ARRAY); } void resizeGL(int width, int height) override { glViewport(0, 0, width, height); } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); OpenGLWidget w; w.show(); return a.exec(); }OpenGL(2)基于Qt做OpenGL开发由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“OpenGL(2)基于Qt做OpenGL开发”