uusoso1 发表于 2016-5-11 20:53:53

qt+opengl实现字幕滚动

各位高手,我用qt在arm开发板上实现滚动字幕(即文字平移)时,发现滚动速度太慢且不均匀,后来发现是cup能力有限,图形重绘的操作太耗时,现在想用opengl实现滚动字幕的功能,不知道能否达到预期的效果,请各位帮忙看一下。
谢谢

wdmxtk002 发表于 2016-5-12 08:14:10

这个不需要用到opengl这个高级的功能吧。。直接用一个透明lable,定时更新上面的字不行吗?

crazylq 发表于 2016-5-12 09:08:09

使用定时器+label很简单,我已经在ARM板测试过了,效果还是很理想的
http://blog.csdn.net/u013704336/article/details/45081849

qq1043068972 发表于 2016-5-12 09:45:02

crazylq 发表于 2016-5-12 09:08 static/image/common/back.gif
使用定时器+label很简单,我已经在ARM板测试过了,效果还是很理想的
http://blog.csdn.net/u013704336/arti ...

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

uusoso1 发表于 2016-5-12 10:10:02

wdmxtk002 发表于 2016-5-12 08:14 static/image/common/back.gif
这个不需要用到opengl这个高级的功能吧。。直接用一个透明lable,定时更新上面的字不行吗? ...

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

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

uusoso1 发表于 2016-5-12 10:15:51

crazylq 发表于 2016-5-12 09:08 static/image/common/back.gif
使用定时器+label很简单,我已经在ARM板测试过了,效果还是很理想的
http://blog.csdn.net/u013704336/arti ...

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


void ScrollText::onChange()
{
    vscroll+=-1; //每个周期向上移动的像素数
}

uusoso1 发表于 2016-5-12 10:23:37

本帖最后由 uusoso1 于 2016-5-12 10:57 编辑

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

LiuL 发表于 2020-8-14 15:12:34

您好,打扰您;请问您的问题解决了吗?qt+opengl在arm板上实现字母滚动,从而实现不卡顿的效果;我这边也是在arm开发板上做的滚动,cpu运行出来的效果和您描述的一样,卡顿,不流畅;您如果解决了,能交流一下吗?十分感谢!
页: [1]
查看完整版本: qt+opengl实现字幕滚动