三维绘图

Qt 提供了QOpenGLWidget来绘制三维图形,它提供了显示OpenGL图形的功能,可以通过对它的子类化,并使用OpenGL命令开发自己的窗口部件。可以在子类中重新实现它的三个虚函数来执行OpenGL任务

  • initializeGL():设置OpenGL资源和状态。该函数只在第一次调用resizeGL()或paintGL()前被调用一次。
  • resizeGL():设置OpenGL的视口,投影等。每次部件改变大小都会调用该函数
  • paintGL():渲染OpenGL场景,每当部件需要更新时都会调用该函数

在使用QOpenGLWidget的同时使用QPainter的好处是可以更高效的绘图,同时还可以使用它的二维高级API,并结合OpenGL调用来绘制三维图形。

着色器是使用OpenGL着色语言(GLSL)编写的一个小型函数,绘图时需要至少指定两个着色器:顶点着色器和片段着色器。Qt中使用QOpenGLShader类用来创建和编译着色器,支持使用着色语言GLSL和OPenGL/ES着色语言GLSL/ES编写着色器。QOPenGLSaderProgram用来创建并设置着色器程序,可以链接多个着色器。QAbstractOpenGLFunctions是连接OpenGL ES API访问接口的基类。

为了正确的使用,需要在.pro文件中加上

QT += opengl
LIBS += -lopengl32

猜你喜欢

转载自blog.csdn.net/weixin_38893389/article/details/81044581