• 4703阅读
  • 5回复

短短6行代码,但是始终运行不正确,高手何在? [复制链接]

上一主题 下一主题
离线czlc
 

只看楼主 倒序阅读 楼主  发表于: 2014-11-27
准备做一个场景编辑器,结合QT和OpenGL。
因为场景(QGLWidget)比较大,所以希望有个滚动面板(QScrollArea)。

新建App工程后MainWindow构造函数中添加代码如下:

  1. QGLWidget *pGLWidget = new QGLWidget;
  2. pGLWidget->setGeometry(0,0,1024,768);
  3. QScrollArea *pScrollArea = new QScrollArea(this);
  4. pScrollArea->setBackgroundRole(QPalette::Dark);
  5. pScrollArea->setWidget(pGLWidget);
  6. setCentralWidget(pScrollArea);

上述代码没有涉及显示任何内容,问题在于这个时候拖动滚动条会异常卡,鼠标从左拖动到右,滚动条要隔个半秒才跳过来,CPU也占有很高。百思不得其姐,百思不得其姐啊。万事开头难,求解……

Qt版本5.3.2



离线roywillow

只看该作者 1楼 发表于: 2014-11-27
都Qt5.3了,就用QOpenGLXXX那些类吧,这些QGL类都是要被废弃的
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线彩阳

只看该作者 2楼 发表于: 2014-11-28
OpenGL渲染机制导致的,不要将OpenGL和非OpenGL组件叠加(overlay)使用,效率不好,显卡差的机器还直接不支持。
上海Qt开发联盟,热忱地欢迎你的加入!
离线czlc

只看该作者 3楼 发表于: 2014-11-28
回 彩阳 的帖子
彩阳:OpenGL渲染机制导致的,不要将OpenGL和非OpenGL组件叠加(overlay)使用,效率不好,显卡差的机器还直接不支持。 (2014-11-28 13:43) 

群里面一个朋友运行同样代码没有问题,可能是我机器问题。
离线czlc

只看该作者 4楼 发表于: 2014-11-28
回 彩阳 的帖子
彩阳:OpenGL渲染机制导致的,不要将OpenGL和非OpenGL组件叠加(overlay)使用,效率不好,显卡差的机器还直接不支持。 (2014-11-28 13:43) 

我现在准备结合QGraphicsView来做,恰巧刚刚看到你的blog,但是代码需要CSDN9分,没能下载。

我有个疑问,就是我打算用一个开源的引擎来渲染Item,渲染引擎中对渲染状态有管理,而QT也对渲染状态也有操作,造成了混淆,比如Qt在beginNativePainting的时候会调用QGL2PaintEngineExPrivate::resetGLState(),从而调用glDisable(GL_BLEND);使得带透明通道图片显示异常。当然在绘制的时候可以手动enable。但这就使得每次绘制都需要重新设置一遍状态,我想了解下这些状态是需要自己管理,还是QT本身有方法来管理它们。
离线彩阳

只看该作者 5楼 发表于: 2014-11-28
回 czlc 的帖子
czlc:我现在准备结合QGraphicsView来做,恰巧刚刚看到你的blog,但是代码需要CSDN9分,没能下载。
我有个疑问,就是我打算用一个开源的引擎来渲染Item,渲染引擎中对渲染状态有管理,而QT也对渲染状态也有操作,造成了混淆,比如Qt在beginNativePainting的时候会调用QGL2PaintEngineE .. (2014-11-28 15:18) 

关注Qt 5.4,它打算引入游戏引擎,也就是说可以使用第三方渲染框架来对Qt显示的内容进行渲染。
上海Qt开发联盟,热忱地欢迎你的加入!
快速回复
限100 字节
 
上一个 下一个