Qt Creator中的3D绘图及动画教程(参照NeHe)

刚刚学习了Qt Creator,发现Qt提供了QtOpenGL模块,对OpenGL做了不错的封装,这使得我们可以很轻松地在Qt程序中使用OpenGL进行绘图渲染。虽然里面还是由不少专业的解释照搬原文的,但还是加入了大量自己的分析。而且Qt中写OpenGL框架上比VC简单太多了,有不少东西都封装优化好了,代码上还是由有很多区别的。当然,其中原教程没解释好的问题我都作了深入的解释,以及一些多余部分解释、代码都被我删掉简化了。

这份Qt OpenGL的3D绘图及动画教程,我基本会按照Nehe的OpenGL教程,只是将代码的实现运用到Qt Creator中,当然其中加了。

下面对Qt中OpenGL做一个简要介绍:

Qt中OpenGL主要是在QGLWidget类中完成的,而要使用QtOpenGL模块,需要在项目文件( .pro)中添加代码"QT+=opengl"。

QGLWidget类是一个用来渲染OpenGL图形的部件,提供了在Qt中显示OpenGL图形的功能。这个类使用起来很简单,只需要继承该类,然后像使用其他QWidget部件一样来使用它。QGLWidget提供了3个方便的纯虚函数,可以在子类中通过重新实现它们来执行典型的OpenGL任务:

initializeGL():设置OpenGL渲染环境,定义显示列表等。该函数只在第一次调用resizeGL()或paintGL()前被自动调用一次。

resizeGL():设置OpenGL的视口、投影等。每次部件改变大小时都会自动调用该函数。

paintGL():渲染OpenGL场景。每当部件需要更新时都会调用该函数。

(以上3个虚函数更具体的调用情况我会用另一篇文章来讲明)

也就是说,Qt中当创建并显示出一个QGLWidget子对象时,会自动依次调用initializeGL()、resizeGL()、paintGL(),完成当前场景的绘制;而当某些情况发生时,会根据情况决定是否自动调用initializeGL()、resizeGL(),一旦调用initializeGL()、resizeGL()了,会紧跟着调用paintGL()对场景进行重新绘制。

以上就是对Qt中OpenGL机制的一个简单介绍,后面的Qt OpenGL的3D绘图及动画教程,我基本会按照Nehe的OpenGL教程,只是将代码的实现运用到Qt Creator中;教程有看不懂的,大家可以给我留言或者参考Nehe的OpenGL教程 http://www.yakergong.net/nehe/

教程目录索引:

01:OpenGL窗口

02:多边形

03:添加颜色

04:旋转

05:3D空间

06:纹理映射

07:光照和键盘

08:混合透明

09:移动图像

10:3D世界

11:飘动的旗帜

12:显示列表

13:图像字体

14:图形字体

15:纹理图形字

16:雾

17:2D图像文字

18:二次几何体

19:粒子系统

20:蒙板

全部教程中需要的资源文件点此下载

【Qt OpenGL】Qt Creator中的3D绘图及动画教程相关推荐

  1. Qt知识回顾(十一)——3D绘图

      OpenGL是一个跨平台的.用来渲染3D图形的标准API,Qt对OpenGL提供了强大的支持.Qt Widgets模块中的QOpenGLWidget类提供了一个可以渲染OpenGL图形的部件,通过 ...

  2. Python中的3D绘图命令~这还不放到论文或PPT里?

    嗨害大家好鸭!我是小熊猫❤ 我企鹅qun里的小伙伴最近问我python中有没有3D绘图命令~ 确实这个很实用~很多情况下, 为了能够观察到数据之间的内部的关系, 可以使用绘图来更好的显示规律. 比如在 ...

  3. 如何用Python中的3D绘图命令,让你的数据更高级

    图是最直观观察到数据之间的内部关系以及规律的,比如在下面的几张动图中,使用matplotlib中的三维显示命令,使得我们可以对于logistic回归网络的性能与相关参数有了更好的理解. 下面的动图显示 ...

  4. 如何在 R 中创建 3D 绘图(附示例)

    示例 1:基本 3D 绘图 下面的代码展示了如何创建一个基本的 3D 绘图: #define x and y x <- -10:10 y <- -10:10#define function ...

  5. Python中的3D绘图命令~放到论文或PPT里太加分了

    导语 很多情况下,为了能够观察到数据之间的内部的关系,可以使用绘图来更好的显示规律. 比如在下面的几张动图中,使用matplotlib中的三维显示命令,使得我们可以对于logistic回归网络的性能与 ...

  6. python 3d绘图旋转_Python和Matplotlib:在Jupyter Noteb中使3D绘图具有交互性

    我想出的解决方案是在iframe中使用vis.js实例. 这显示了笔记本中的交互式3D图,该图仍可在nbviewer中使用. visjs代码是从3D图形页面上的示例代码中借用的 一个小笔记本来说明这一 ...

  7. android 3d翻页动画,使用XML在Android中创建3D翻页动画

    这是答案,虽然它只适用于3.0及以上版本. 1)创建一个名为"animator"的新资源文件夹. 2)创建一个新的.xml文件,我将其称为"翻转".使用以下xm ...

  8. [Qt教程] 第48篇 进阶(八) 3D绘图简介

    [Qt教程] 第48篇 进阶(八) 3D绘图简介 楼主  发表于 2013-10-7 09:44:37 | 查看: 184| 回复: 0 3D绘图简介 版权声明 该文章原创于作者yafeilinux, ...

  9. python 3d图形控件 可交互_python – 在PySide中嵌入交互式3D绘图

    在PySide GUI中嵌入交互式3D绘图的最佳方法是什么?我在这里看了一些关于PySide GUI中嵌入的2D图的例子: 但是,我正在寻找的功能并不完全相同.该图需要根据用户的鼠标输入进行旋转和缩放 ...

最新文章

  1. EOS智能合约:system系统合约源码分析
  2. 在XMPP的JAVA开源实现Openfire中,增加LBS 附近的人功能
  3. python中numeric_Python中的Numeric
  4. NOIP2018复赛 游记
  5. 派生类的友元与析构【C++继承】
  6. 图像算法研究---一种简单的YUV转RGB的优化算法
  7. oracle中的内连接和外连接区别
  8. 华为HG8120C光猫换天邑TEWA-600AGM(百兆换千兆)的过程记录
  9. ssm项目_什么是SSM,以及javaweb项目包的含义(三层架构)
  10. SSM整合——简单的小项目实战
  11. Windows 技术篇-修改电脑时间格式显示为12小时、24小时时间制式方法
  12. 浏览器解析jsx_jsx的本质
  13. 谈一谈我使用AI得贤招聘官的AI面试体验之旅
  14. 15 个常见的 Node.js 面试问题及答案
  15. 5个可以让你事半功倍的Python自动化脚本
  16. 熊孩子说“你没看过奥特曼”,赶紧用Python学习一下,没想到
  17. MySQL复习笔记(三)
  18. Neo4j3-Neo4j基础操作(中)
  19. Microchip PIC单片机
  20. 傅里叶变换零基础学习记录

热门文章

  1. 如何安装eve和pnet(安装教程)
  2. YRCloudFile新版本携数据分层功能闪亮发布
  3. Spring Security+OAuth2认证服务之令牌管理源码分析
  4. 一篇就懂SpringBoot邮箱功能
  5. 读了借来的《牧羊少年的奇幻之旅》
  6. 新版的谷歌浏览器表格宽溢出
  7. 《Effective java》—–读书笔记
  8. SQL自连接,内连接,区别
  9. 推荐全网最好的开源压缩软件,没有之一!
  10. 如何从地面验证一个已安装微波天线的极化方向