vs2013使用QT自带的openGL
来源:互联网 发布:数据埋点怎么做 编辑:程序博客网 时间:2024/06/06 04:21
基础知识:
1 OpenGL
OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库,gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包含了最基本的3D函数,而glu似乎对gl的辅助,如果算数好,不用glu的情况下,也是可以做出同样的效果。glut是基本的窗口界面,是独立于gl和glu的。可以使用Qt窗口界面来代替glut的界面。
2 QGLWidget
QGLWidget中有三个虚函数。关于这三个虚函数,调用顺序及功能如下:
1. initializeGL() ,在程序开始执行的时候最先被调用一次(当然构造函数是最先执行的,其次是initializeGL() )。用来完成相关的初始化工作,比如建立opengl绘图的上下文环境。
2. resizeGL(),在initializeGL()完成之后被调用一次(实际为多次),以及在窗口位置以及大小改变时被调用。用于完成建立opengl视图窗口等一系列工作。
3. paintGL(),绘制opengl图像。当窗口需要被刷新时会被调用(即用户使用updateGL()函数的时候,屏幕会被重绘),以及在resizeGL()完成之后,也会引起重绘。
程序开始>>构造函数>>initializeGL()>>resizeGL()>>paintGL()
若用户调用updateGL()函数>>引起paintGL()函数的调用。
若窗口位置或者尺寸改变>>调用resizeGL()>>调用paintGL()
测试案例
1 新建QT项目
2 勾选QT GUI的OpenGL
3 选择Form File 添加新类
4 添加QT5Class
5 命名方式如下,注意选择下面的文件
6 头文件和cpp文件重写如下:
#ifndef MY_QOPENGLWIDGET_H#define MY_QOPENGLWIDGET_H#include <QOpenGLWidget>#include <QOpenGLFunctions>class My_QOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions{ Q_OBJECTpublic: My_QOpenGLWidget(QWidget *parent); ~My_QOpenGLWidget(); void initializeGL(); void resizeGL(int width, int height); void paintGL();private:};#endif // MY_QOPENGLWIDGET_H
#include "my_qopenglwidget.h"My_QOpenGLWidget::My_QOpenGLWidget(QWidget *parent) : QOpenGLWidget(parent){ // 设置OpenGL的版本信息 QSurfaceFormat format; format.setRenderableType(QSurfaceFormat::OpenGL); format.setProfile(QSurfaceFormat::CoreProfile); format.setVersion(3, 3); setFormat(format);}My_QOpenGLWidget::~My_QOpenGLWidget(){}void My_QOpenGLWidget::initializeGL(){ //初始化OpenGL函数 initializeOpenGLFunctions(); //设置全局变量 glClearColor(0.0f, 0.0f, 0.0f, 1.0f); setGeometry(20, 50, 300, 200);//设置窗口初始位置和大小 glShadeModel(GL_FLAT);//设置阴影平滑模式 glClearColor(0.1, 1.0, 0.2, 0);//改变窗口的背景颜色,不过我这里貌似设置后并没有什么效果 glClearDepth(1.0);//设置深度缓存 glEnable(GL_DEPTH_TEST);//允许深度测试 glDepthFunc(GL_LEQUAL);//设置深度测试类型 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);//进行透视校正}void My_QOpenGLWidget::paintGL(){ //清理屏幕 glClear(GL_COLOR_BUFFER_BIT);}void My_QOpenGLWidget::resizeGL(int width, int height){ //未使用 Q_UNUSED(width); Q_UNUSED(height);}
7 打开ui文件,
8 选择Open GL Widget 放入
9 提升Open GL Widget为My_QOpenGLWidget
10 最终可以得到
本教程所需资源下载
http://download.csdn.net/download/u012260117/10106890
阅读全文
0 0
- vs2013使用QT自带的openGL
- VS2013 单元测试(使用VS2013自带的单元测试)
- vs2013自带的数据库实例。
- 关于QT自带的打包工具windeployqt的使用
- 在CodeBlock中使用第三方的OpenGL(非自带的OpenGL)
- QT 5.6 自带的数据库QSqlite 使用实例
- VS2013自带的数据库SQL Server Express LocalDB使用介绍
- asp.net VS2013自带的数据库SQL Server Express LocalDB使用介绍
- 使用VS2013自带的PreEmptive Dotfuscator and Analytis来混淆C#代码
- QT使用ROS自带的opencv新建使用OPENCV的QT工程(None ROS)
- VS2013使用OpenGL
- VS2013自带的Newtonsoft导致的编译异常
- 解析Qt自带的Style示例
- 解析Qt自带的Style示例
- 解析Qt自带的Style示例
- 解析Qt自带的Style示例
- 解析Qt自带的Style示例
- 解析Qt自带的Style示例
- 【传智播客郑州校区分享】浅谈移动端布局问题
- 2017深圳国际移动医疗健康产业博览会会刊(参展商名录)
- 《项目管理论坛—IT项目管理与职业生涯规划》苏州站
- JavaScript学习12 JS中定义对象的几种方式
- sql基础知识
- vs2013使用QT自带的openGL
- Java开发手册(三):代码风格与日志
- Chrome地址栏使用百度搜索是出现hao_pg尾巴
- Kotlin
- 操作系统原理
- 小程序web-view的使用与调试
- 图论专项训练习题集(转载,备忘,备做)
- Java开发手册(四):注释与异常处理
- SQL中EXISTS的用法