查看完整版本: [-- 什么时候应该使用QGLWidget? --]

QTCN开发网 -> Qt基础编程 -> 什么时候应该使用QGLWidget? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

雾渐浓 2021-01-04 14:05

什么时候应该使用QGLWidget?

我有一个需要大量绘制图片的需求,就是把从摄像头解析的视频数据播放出来,我是用QWidget重载了paintEvent函数,利用槽进行刷新,但是有一个问题就是绘制一段时间以后摄像头数据就卡在某一帧上了,我觉得是我使用QWidget的绘制问题,因为有两个摄像头数据需要绘制。然后我使用QGLWidget进行尝试,30ms进行一次数据刷新,使用paintEvent绘制同一张图片,QGLWidget的GPU使用率5%,cpu利用率0.7%。然后使用QWidget,GPU利用率为0,CPU为0.4%,这样看来使用QWidget的效率是比使用QGLWidget高的,但是为什么还是会出现我绘制的问题,其次,应该在什么时候使用QGLWidget呢?

雾渐浓 2021-01-04 14:09
确实觉得很疑惑,有没有相关的资料可以学习的?

20091001753 2021-01-05 16:23
Qt 很多模块是支持 GPU 加速的。
比如你创建的是 QGLWidget,就会开启 GPU 加速。
但实际效果,不仅与你的硬件环境有关,也与你的任务、代码有关。
如果你发现使用 GPU 并不能提高性能,那就用 QWidget 呗。

确实很多时候,都是要看实际跑起来的效果,最后决定方案。

雾渐浓 2021-01-06 11:10
20091001753:Qt 很多模块是支持 GPU 加速的。
比如你创建的是 QGLWidget,就会开启 GPU 加速。
但实际效果,不仅与你的硬件环境有关,也与你的任务、代码有关。
如果你发现使用 GPU 并不能提高性能,那就用 QWidget 呗。
....... (2021-01-05 16:23) 

可是直接使用QWidget对于高频地绘制程序来说是不是会出现问题,比如我的就出现了卡住的现象,我看QVideoWidget也是继承自QWidget的,但是不太清楚它具体是怎么实现的,也没看到它用paintEvent进行绘制

20091001753 2021-01-06 16:44
你的需求类似于监控的客户端呗,数据源是摄像头,可能有多个。
Qt 是肯定能做的,QWidget、QML 都行。
斗鱼的 PC客户端 就是 Qt 做的,里面多少直播画面啊,也没见卡。


雾渐浓 2021-01-07 00:03
20091001753:你的需求类似于监控的客户端呗,数据源是摄像头,可能有多个。
Qt 是肯定能做的,QWidget、QML 都行。
斗鱼的 PC客户端 就是 Qt 做的,里面多少直播画面啊,也没见卡。
 (2021-01-06 16:44) 

嗯,就是想知道一下在这种大量进行图片刷新绘制的情况下,QT是否能够刷新完成,毕竟QT的刷新是放在事件循环里的,我在想是不是我程序的其它操作在事件循环里导致了绘制出现卡顿的情况,那这种情况又要怎么处理,查不到什么有用的资料


查看完整版本: [-- 什么时候应该使用QGLWidget? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled