OpenGL的引入
需加入的头文件:#include<QGLWidget>
并在.pro文件中加入:QT += opengl
·使用基本方法
QGLWidget派生自Qwidget,故绝大多数情况下QGLWidget可以像QWidget一样使用,只是使用OpenGL的函数替代QPainter实现绘制。通常通过子类化QGLWidget来实现OpenGL的使用,
QGLWidget提供了三个虚函数用以重载来实现OpenGL的绘制:
·paintGL()
·窗口绘制函数,相当于paintEvent(),但QGLWidget依旧有自己的paintEvent()。
·paintGL()只在需要重绘时被调用,即调用updateGL()时被调用
·在此使用OpenGL中的函数进行场景绘制,部分函数实际是QGLWidget的函数成员
·resizeGL()
·第一次调用paintGL()之前initializeGL()之后调用resizeGL()函数,窗口大小发生改变时也会调用该函数
·在此设置视口,投影和其它与窗口部件尺寸相关的设置
·initializeGL()
·相当于注册函数,在调用paintGL()之前只被调用一次
·在此初始化GL环境:设置场景全局的属性,绘图描述表,定义显示列表,执行其它的初始化
此外
·updateGL()
·更新场景,通知调用paintGL(),在任何改变场景后调用,但自身不用实现。
·交互控制
·鼠标和键盘事件可通过mousePressEvent()和keyPressEvent()进行处理,与QWidget相同。要创建动画,只需启动QTimer,然后调用updateGL()。
需加入的头文件:#include<QGLWidget>
并在.pro文件中加入:QT += opengl
·使用基本方法
QGLWidget派生自Qwidget,故绝大多数情况下QGLWidget可以像QWidget一样使用,只是使用OpenGL的函数替代QPainter实现绘制。通常通过子类化QGLWidget来实现OpenGL的使用,
QGLWidget提供了三个虚函数用以重载来实现OpenGL的绘制:
·paintGL()
·窗口绘制函数,相当于paintEvent(),但QGLWidget依旧有自己的paintEvent()。
·paintGL()只在需要重绘时被调用,即调用updateGL()时被调用
·在此使用OpenGL中的函数进行场景绘制,部分函数实际是QGLWidget的函数成员
·resizeGL()
·第一次调用paintGL()之前initializeGL()之后调用resizeGL()函数,窗口大小发生改变时也会调用该函数
·在此设置视口,投影和其它与窗口部件尺寸相关的设置
·initializeGL()
·相当于注册函数,在调用paintGL()之前只被调用一次
·在此初始化GL环境:设置场景全局的属性,绘图描述表,定义显示列表,执行其它的初始化
此外
·updateGL()
·更新场景,通知调用paintGL(),在任何改变场景后调用,但自身不用实现。
·交互控制
·鼠标和键盘事件可通过mousePressEvent()和keyPressEvent()进行处理,与QWidget相同。要创建动画,只需启动QTimer,然后调用updateGL()。