找回密码
 立即注册
收起左侧

qt+opengl实现字幕滚动

7
回复
12635
查看
[复制链接]
累计签到:4 天
连续签到:1 天
来源: 2016-5-11 20:53:53 显示全部楼层 |阅读模式
1Qter豆
各位高手,我用qt在arm开发板上实现滚动字幕(即文字平移)时,发现滚动速度太慢且不均匀,后来发现是cup能力有限,图形重绘的操作太耗时,现在想用opengl实现滚动字幕的功能,不知道能否达到预期的效果,请各位帮忙看一下。
谢谢

回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2016-5-12 08:14:10 显示全部楼层
这个不需要用到opengl这个高级的功能吧。。直接用一个透明lable,定时更新上面的字不行吗?
回复

使用道具 举报

累计签到:1100 天
连续签到:1 天
2016-5-12 09:08:09 显示全部楼层
使用定时器+label很简单,我已经在ARM板测试过了,效果还是很理想的
http://blog.csdn.net/u013704336/article/details/45081849

点评

我想说用opengl会不会更慢,那个可是3d动画,对cpu负担更大  详情 回复 发表于 2016-5-12 09:45
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2016-5-12 09:45:02 显示全部楼层
crazylq 发表于 2016-5-12 09:08
使用定时器+label很简单,我已经在ARM板测试过了,效果还是很理想的
http://blog.csdn.net/u013704336/arti ...

我想说用opengl会不会更慢,那个可是3d动画,对cpu负担更大
回复

使用道具 举报

累计签到:4 天
连续签到:1 天
2016-5-12 10:10:02 显示全部楼层
wdmxtk002 发表于 2016-5-12 08:14
这个不需要用到opengl这个高级的功能吧。。直接用一个透明lable,定时更新上面的字不行吗? ...

感谢您的回答。
我遇到的情况是用纯软实现时,arm+ubuntu在24寸大屏上播放时,明显感觉到字幕会抖动,且如果加快滚动速度的话,就会出现类似跳跃的症状(字数越多,效果越差),而在工控机上播放时是非常快速且流畅的。通过检查代码,发现repaint(或类似函数)耗时太长,且每次耗时长短有不同,导致我让它快速滚动时(比如Timer=10ms),滚动字幕根本就没有加快速度,反而抖动更厉害了。

因考虑到repaint操作太耗时,又看到opengl运转非常流畅,丝毫没有卡顿的感觉,所以才考虑是不是可以用opengl来实现该功能。
回复

使用道具 举报

累计签到:4 天
连续签到:1 天
2016-5-12 10:15:51 显示全部楼层
crazylq 发表于 2016-5-12 09:08
使用定时器+label很简单,我已经在ARM板测试过了,效果还是很理想的
http://blog.csdn.net/u013704336/arti ...

您好,感谢您的回答。
我也在arm板上作的测试,但是当滚动速度加快的时候,在大屏幕上,就会效果很差。核心代码就几行,如果您有时间,请帮忙看一下。
  1. ScrollText::ScrollText(QWidget *parent) :
  2.     QWidget(parent)
  3. {
  4.     m_timer = new QTimer(this);
  5.     connect(m_timer, SIGNAL(timeout()), this, SLOT(onChange()));
  6.     m_timer->start(50); //定时器
  7. }


  8. void ScrollText::onChange()
  9. {
  10.     vscroll+=-1; //每个周期向上移动的像素数
  11. }
复制代码
回复

使用道具 举报

累计签到:4 天
连续签到:1 天
2016-5-12 10:23:37 显示全部楼层
本帖最后由 uusoso1 于 2016-5-12 10:57 编辑
qq1043068972 发表于 2016-5-12 09:45
我想说用opengl会不会更慢,那个可是3d动画,对cpu负担更大

是54寸的屏幕,抱歉,刚才写错了。
经过我查验代码,统计后发现,在arm+ubuntu下同下,调用重绘函数(repaint等),耗时在30ms~60ms之间,滚动字幕区域越大,重绘时间越长,且每次重绘时间有差别,这也就导致了,我再想让滚动字幕提速,减小Timer的间隔(比如10ms),也起不到任何效果,毕竟重绘操作耗时至少30ms,且每次耗时不同,这就导致了滚动字幕不能太快,但仍然会出现抖动或小跳跃的情况。
如果每个Timer间隔跳2个或更多个像素,在大屏幕上能看出明显的抖动。
这就是我考虑能不能通过调用GPU实现快速重绘的初衷。
回复

使用道具 举报

尚未签到

2020-8-14 15:12:34 显示全部楼层
您好,打扰您;请问您的问题解决了吗?qt+opengl在arm板上实现字母滚动,从而实现不卡顿的效果;我这边也是在arm开发板上做的滚动,cpu运行出来的效果和您描述的一样,卡顿,不流畅;您如果解决了,能交流一下吗?十分感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了