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进行绘图相关推荐

  1. QT中使用OpenGL绘制图形

    Qt Creator中的3D绘图及动画教程(参照NeHe) 刚刚学习了Qt Creator,发现Qt提供了QtOpenGL模块,对OpenGL做了不错的封装,这使得我们可以很轻松地在Qt程序中使用Op ...

  2. 在Qt中使用OpenGL(二)

    前言 在Qt中使用OpenGL(一) 在上一篇文章中,我们结合了一个实际的例子了解了在Qt中使用OpenGL的全部过程.但是肯定对于初次接触的人来说哪怕知道了整个过程,依旧是两眼一抹黑的搞不懂到底要怎 ...

  3. 在Qt中使用OpenGL(四)

    前言 在Qt中使用OpenGL(一) 在Qt中使用OpenGL(二) 在Qt中使用OpenGL(三) 在之前的文章中,我们通过一个最简单的例子完成了在Qt中使用OpenGL绘图的全过程,然后又使用了纹 ...

  4. Qt中的OpenGL

    Qt还是本人可移植GUI程序开发的首选,不过Qt开发普通的应用程序是行,但是据说效率太低,以至于像某些人说的那种刷新看得到一条条横线?这点我比较纳闷,就我使用的感觉,虽然Qt不以效率著称,但是事实上有 ...

  5. qt 中 使用 opengl 上下文 (context) 相关的注意事项

    qt 中 使用 opengl 相关的注意事项 本人移植了一个glut到qt的项目,前期没有注意相关的上下文的使用,导致相关的显示混乱. 解决方案 makeCurrent();在每一个类函数中加上这一句 ...

  6. 在Qt中使用OpenGL(三)

    前言 在Qt中使用OpenGL(一) 在Qt中使用OpenGL(二) 在之前的文章中,我们首先了解了在Qt中使用OpenGL的全流程,然后我们使用了一个最简单的例子将这个流程给过了一遍. 那么,在本篇 ...

  7. Qt中使用OpenGL渲染视频

    Qt5.4之后,OpenGL在Qt中可以通过QOpenGLWidget和QOpenGLFunctions来实现,以下Demo(只展示OpenGL相关部分)解码出AVFrame后对其进行渲染. //顶点 ...

  8. 在qt中使用opengl绘制图形动画

    可以使用Qt OpenGL模块的功能实现图形的绘制,实现3d动画效果,以下例子介绍如何使用Qt OpenGL相关功能. 1. 2D图像绘制:该示例使用QPainter和QGLWidget展示一个动态的 ...

  9. opengl png图片 qt_QT中使用OpenGL绘图

    在之前说道过VS2010中配合OpenGL绘图的问题,这回是想要说说在QT中使用OpenGL,其实两者并无太大区别,因为都是基于C++语言的. 主要是想简要介绍下OpenGL在QT中的使用方法跟一些错 ...

最新文章

  1. [云炬创业基础笔记]第六章商业模式测试16
  2. 17、【 商品管理模块开发】——后台商品图片的springmvc和富文本上传以及ftp文件服务器的开发...
  3. 吸气剂/设定者。 邪恶。 期。
  4. H3C交换机配置学习随笔
  5. Android 6 ti dsp,TI DSP TMS320C66x学习笔记之内联指令(c6x.h中文注释)(六)
  6. 使用NUnit进行DotNet程序测试
  7. pytest测试框架_带你深入理解自动化测试框架Pytest的配置文件!
  8. linux ftp命令下载目录,linux命令行下的ftp 多文件下载和目录下载
  9. JAVA开发FPS透视_FPS 游戏实现D3D透视
  10. 扫描探针显微术入门(3)
  11. 关于Chrome的广告和弹窗拦截插件
  12. Django应用及分布式路由
  13. 新贵 轻雅 100 数字键 numlock问题
  14. 300字美文摘抄加赏析
  15. APPCAN 电子签名设置
  16. 大华 / 海康威视(HIKVISION) 网络视像头的连接及使用
  17. C语言试题173之实现插入排序算法
  18. 海康web3.2无插件开发指北
  19. Java三个月速成学习路线图
  20. 面对金融风暴,升斗小民的处事哲学

热门文章

  1. java 运行 加载jar,java运行时加载额外的 jar 包或 class
  2. tkmybatis 子查询_日均20亿流量:携程机票查询系统的架构升级
  3. gateway sentinel 熔断 不起作用_Spring Cloud Alibaba集训营第五天(服务熔断和限流)
  4. 计算机为什么启动二次才能打开,为什么电脑要2次重启才能启动显示器那
  5. 华为鸿蒙战略大会,华为发布鸿蒙2.0手机版的三大战略意义,全场景万物互联只是其一...
  6. 提高vivado的编译速度
  7. 查看依赖树_如何在基于 Ubuntu 或 Debian 的 Linux 发行版中查看一个软件包的依赖...
  8. hive分隔符_HIVE-默认分隔符的(linux系统的特殊字符)查看,输入和修改
  9. 双柱状图柱子数量比较多_一条代码完成堆叠柱状图-冲击图的操作-终结版
  10. 嵌入式驱动自学者的亲身感受,有什么建议?