qt中的OpenGL代码框架
2016-04-23 21:22
344 查看
initializeGL() 注册函数,在此设置GL的渲染绘制属性、定义显示列表、载入固定纹理等初始化工作。在initializeGL()在调用paintGL()之前只被调用一次,之后不再调用。
paintGL() 绘制函数,在此使用OpenGL中的接口进行场景绘制,QGLWidget的paintEvent( QPaintEvent* )将会自动调用 paintGL()进行部件的显示绘制。也可在需要重绘时通过updateGL()时调用paintGL()。
resizeGL() 该函数用于处理当部件大小发生改变时,对OpenGL绘图管线各矩阵需要进行的操作。该函数paintGL()第一次调用之前,initializeGL()调用之后被第一次被调用, 之后每当QGLWidget的不见大小发生改变时,都将调用该函数来对视图、投影矩阵等进行相应的设置。
可在任何需要刷新场景绘制的地方通过调用updateGL()来通知OpenGL进行重绘,但updateGL()自身不用实现。
与QWidget相同,鼠标和键盘事件是通过mousePressEvent()和keyPressEvent()等事件处理函数进行处理的。要创建动画,只需启动QTimer,然后调用updateGL()。但应注意,如果需要在QGLWidget派生类之外的其他函数中进行paintGL()相同功能的绘制,需要先使用makeCurrent()接口将后面绘制的上下文对象(Context)标记为当前上下文对象(Current
Context)。
paintGL() 绘制函数,在此使用OpenGL中的接口进行场景绘制,QGLWidget的paintEvent( QPaintEvent* )将会自动调用 paintGL()进行部件的显示绘制。也可在需要重绘时通过updateGL()时调用paintGL()。
resizeGL() 该函数用于处理当部件大小发生改变时,对OpenGL绘图管线各矩阵需要进行的操作。该函数paintGL()第一次调用之前,initializeGL()调用之后被第一次被调用, 之后每当QGLWidget的不见大小发生改变时,都将调用该函数来对视图、投影矩阵等进行相应的设置。
可在任何需要刷新场景绘制的地方通过调用updateGL()来通知OpenGL进行重绘,但updateGL()自身不用实现。
与QWidget相同,鼠标和键盘事件是通过mousePressEvent()和keyPressEvent()等事件处理函数进行处理的。要创建动画,只需启动QTimer,然后调用updateGL()。但应注意,如果需要在QGLWidget派生类之外的其他函数中进行paintGL()相同功能的绘制,需要先使用makeCurrent()接口将后面绘制的上下文对象(Context)标记为当前上下文对象(Current
Context)。
相关文章推荐
- QT网络编程笔记
- qt中打开摄像头
- Qt之图形(绘制文本)
- Qt之图形(绘制文本)
- 浅谈QTableView和QTableWidget数据表格显示方式
- win10+qt5.6.0+qtcreator3.6.1+mingw4.9.2+opencv4.8.12环境安装
- Qt开发环境搭建
- qthread 使用 signal 方法通信
- Qt实现基于G.729A(G729A)的语音聊天
- 解决Ubuntu中QtCreator(3.6.1)不能使用搜狗输入法录入汉字问题
- qt翻译--QTextTableCell(表格单元)
- Qt 打开安卓相册选择图片并获取图片的本地路径
- QT Layout 布局的重要性
- 根据 Mavlink 协议串口通信实现数据的实时更新并用折线图显示
- [QT学习]拷贝文件
- win7_64bits下QT试用openCV库(1)
- Qt播放PCM音频(裸流)文件的两种方法
- Qt播放WAV格式音频文件的两种方法
- Qt(一)--- QSS的语法
- 第5课 Qt Creator工程介绍