• 10076阅读
  • 6回复

[提问]Qt和OpenGL的问题,关于paintGL()函数的 [复制链接]

上一主题 下一主题
离线彩阳
 

只看楼主 倒序阅读 楼主  发表于: 2012-10-17
关键词: 求助QT4OpenGL
我看了一个移植NeHe的OpenGL教程的Qt教程,教我们怎样使用Qt3+OpenGL制作三维程序。对于NeHe的教程有了解的吗?其中有一个例子是让三角形和四边形旋转的,旋转的代码在QGLWidget::paintGL()里面实现,但是我这里(Ubuntu11.10、Qt4.8)却不能进行旋转。找到原因,是因为paintGL()函数仅仅被调用三次。这样当然不能出现连续旋转的效果了。
那么,有没有什么办法能够让其旋转呢?
上海Qt开发联盟,热忱地欢迎你的加入!
离线彩阳

只看该作者 1楼 发表于: 2012-10-17
这是相关的代码,大家看看。这是相关的代码,大家看看。 [Qt、OpenGL]对图形进行旋转.7z (4 K) 下载次数:12

上海Qt开发联盟,热忱地欢迎你的加入!
离线ffii4455

只看该作者 2楼 发表于: 2012-10-18
怎么会仅仅只调用两次呢,凡是执行updateGL这个虚函数后,paintGL都会被调用的。
离线彩阳

只看该作者 3楼 发表于: 2012-10-18
回 2楼(ffii4455) 的帖子
能编译运行我的附件吗?我也不知道原因,用调试器调试了,仅仅调用3次就无法进入此函数了。
上海Qt开发联盟,热忱地欢迎你的加入!
离线ffii4455

只看该作者 4楼 发表于: 2012-10-18
paintGL在初次绘图时,按照你的代码会调用3次。
想实现连续的动画,不管在哪里都是需要定时器来不断重绘画面的,而你没有这么做。
我修改了一下你的代码,只改了H和CPP。加上了定时器,你可以参考一下。
最后,感觉你的代码应该是完全按照NEHE写的,个人觉得没有这个必要,OpenGL并不是一门语言,它只是一个库,你完全可以发挥自己的想象力来写,教程里的只是用法(例如,你完全没有必要写一个询问是否全屏的东西。。。这个东西showFullScreen()和show()是Qt提供的,和opengl无关)


*以上意见仅供参考。 NeHeWidget.cpp (3 K) 下载次数:15 NeHeWidget.h (1 K) 下载次数:14
离线ffii4455

只看该作者 5楼 发表于: 2012-10-18
回 3楼(彩阳) 的帖子
你下附件看看吧
离线彩阳

只看该作者 6楼 发表于: 2012-10-19
回 5楼(ffii4455) 的帖子
谢谢提供思路。
在CSDN上有其他人提供了另外的思路,在paintGL()函数中添加update()强制更新画面,也能达到效果。
1、你的效果我发现如果移动窗口,窗口响应缓慢;我想是定时器引起的。
2、CSDN上的建议:加上update()函数后图形转动速度和窗口大小有关,窗口越大,图形转动速度越慢。
上海Qt开发联盟,热忱地欢迎你的加入!
快速回复
限100 字节
 
上一个 下一个