一种图像更新方法及装置的制作方法

文档序号:6335440阅读:218来源:国知局
专利名称:一种图像更新方法及装置的制作方法
技术领域
本发明涉及图像处理领域,尤其涉及一种图像更新方法及装置。
背景技术
计算机从显卡到显示器的一个简单图像显示的流程计算机系统应用调用接口, 显卡把图像数据写入显示缓冲区,而把显示缓冲区中的数据读取传输到显示器,显示器负 责把数据显示于屏幕上。系统把图像数据“写入”显卡显示缓冲区,显示器“读取”显示缓冲区的图像数据并 显示。这两个步骤在没有任何限制的前提下,有可能发生两个步骤同时执行的情况,在某一 时刻,显卡在完成第i帧图像“写入”缓冲区操作后,正在进行第i+1帧图像“写入”缓冲区 操作时,显示器同步在执行从缓冲区读取操作,那么显示器读取的图像数据就是第i帧与 第i+1帧的组合图像——即一部分是第i帧的图像,而剩下的部分是第i+1帧的图像。看 起来就像图像撕裂成两部分一样。这种现象就是图像显示的“图像撕裂”现象。解决图形 撕裂的一种通用方法是“垂直同步”。当应用程序采用垂直同步方法来更新图像时,必须等到垂直同步信号才能往显示 缓冲区写入图像数据,而显示安装指定的频率绘制刷新屏幕图像。垂直同步信号的频率与 屏幕刷新频率相等,即两个垂直同步信号与两个屏幕绘制刷新间的时间差是相等的。而垂 直同步信号与显示器绘制刷新图像间有一定的时间差,由于现代显卡的强劲绘图能力,所 以该时间差足够显卡完成图像数据的写入工作,从而避免显卡与显示器两者同时操作显示 缓冲区,进而解决了上述的图像更新时“画面撕裂”问题。但是当屏幕的刷新率一定(假设为60Hz),多窗口同时使用垂直同步方法更新图 像,单个窗口的平均帧率为60/n FPS (Frames Per Second)。即随着窗口个数的上升,单个 窗口的平均帧率线性下降。当使用垂直同步更新图像时,系统往显示缓冲区更新图像数据 的帧率是一定的。如图1所示,假设有2个窗口的图像需要更新,由于没有相应的接口函数 可以获取垂直同步信号的具体时间,不知道垂直同步信号什么时候到来,更新时只能阻塞 等待垂直同步信号的到来,每个垂直同步信号到来时只更新一个窗口的图像数据,显卡的 性能没有得到充分地发挥。

发明内容
本发明公开了一种图像更新方法及装置,可以克服垂直同步更新图像时图像帧率 低的问题。—种图像更新方法,其特征在于,包括步骤
(1)当不启用垂直同步时,获取应用程序调用显示接口更新图像的系统时间tl;以及 获取所述显示接口更新图像完成后的系统时间t2 ;
(2)当开启垂直同步时,获取某一次垂直同步信号到来时所述显示接口更新图像完成 后的系统时间Tl ;(3)根据所述tl、所述t2以及所述Tl,计算所述垂直同步信号到来的系统时间T_ syncl ;
(4)根据屏幕刷新率计算两个相邻垂直同步信号的时间差T_diff;
(5)以所述T_synCl为基准,并根据所述T_diff,预先计算各个垂直同步信号到来的系 统时间T_syncn ;
(6)每次垂直同步信号到来时,把多个窗口的图像数据渲染到缓冲区。本发明还公开了一种图像更新装置,其特征在于,包括
获取模块,用于当不启用垂直同步时,获取应用程序调用显示接口更新图像的系统时 间tl、所述显示接口更新图像完成后的系统时间t2以及当开启垂直同步时,获取某一次垂 直同步信号到来时所述显示接口更新图像完成后的系统时间Tl ;
计算模块,用于计算两个相邻垂直同步信号的时间差T_diff、根据获取模块中获取的 时间和所述T_diff来计算各垂直同步信号到来的系统时间T_syncn ;
渲染模块,用于当每次垂直同步信号到来时,把多个窗口的图像数据渲染到缓冲区。本发明中通过获取到不开启垂直同步时,应用程序调用更新时的系统时间和更新 完成时间,进而可计算出更新一帧固定图像内容所需的时间;再获取到开启垂直同步时的 更新完成时间,并计算出两个相邻垂直同步信号时间的时间间隔,因各个垂直同步信号的 系统时间成等差数列,由此可以计算出个垂直同步信号到来的系统时间;当垂直同步信号 到来时,把多个窗口的图像数据渲染到缓冲区。因为可以提前知道垂直同步信号到来的系 统时间,不用被动等待垂直同步信号到来再进行图像数据的渲染,在垂直同步信号到来与 显示器刷新图像间的时间差内,把多个窗口的图像数据渲染到缓冲区,提高了图像的帧率。


图1是一个垂直同步图像更新流程图; 图2是本发明方法的一个流程图3是不启动垂直同步时的图像更新流程图; 图4是另一个垂直同步图像更新流程图; 图5是本发明的装置示意图。
具体实施例方式参考图2,本发明公开了一种图像更新方法,具体步骤如下
201、当不启用垂直同步时,获取调用更新时间tl以及更新完成时间t2;
当不启用垂直同步时,获取应用程序调用显示接口更新图像的系统时间tl ;以及获取 显示接口更新图像完成后的系统时间t2 ;
202、当开启垂直同步时,获取某一次垂直同步信号到来时更新完成的时间Tl;
当开启垂直同步时,获取某一次垂直同步信号到来时显示接口更新图像完成后的系统 时间Tl。203、根据tl、t2以及Tl,计算垂直同步信号到来的系统时间T_synCl ;
204、根据屏幕刷新率计算两个相邻垂直同步信号的时间差T_diff;
205、预先计算各个垂直同步信号到来的系统时间T_syncn;以T_syncl为基准,并根据T_diff,预先计算各个垂直同步信号到来的系统时间τ_ Syncn0206、多窗口图像数据渲染。每次垂直同步信号到来时,把多个窗口的图像数据渲染到缓冲区。本发明中通过获取到不开启垂直同步时,应用程序调用更新时的系统时间和更新 完成时间,进而可计算出更新一帧固定图像内容所需的时间;再获取到开启垂直同步时的 更新完成时间,并计算出两个相邻垂直同步信号时间的时间间隔,因各个垂直同步信号的 系统时间成等差数列,由此可以计算出个垂直同步信号到来的系统时间;当垂直同步信号 到来时,把多个窗口的图像数据渲染到缓冲区。因为可以知道垂直同步信号到来的系统时 间,不用被动等待垂直同步信号到来再进行图像数据的渲染,在垂直同步信号到来与显示 器刷新图像间的时间差内,把多个窗口的图像数据渲染到缓冲区,提高了图像的帧率。下面介绍本发明方法的一个实施例
不开启垂直同步时,参考图3,获取应用程序调用显示接口更新图像的系统时间tl ;因 为不开启垂直同步时应用程序调用显示接口更新图像的系统时间与显卡实际开始更新的 系统时间是同一时间,那么获取到该显示接口更新图像完成后的系统时间t2后;就可以计 算出更新一帧固定图像内容所需的时间TO ;T0=t2-tl ;
参考图4,开启垂直同步的情况下,获取某一次垂直同步信号到来时该显示接口更新图 像完成后的系统时间Tl ;
因为Tl由2部分的时间组成更新一帧固定图像内容所需的时间TO和垂直同步信号 到来的时间 T_syncl,那么 T_syncl=Tl_T0;
因为垂直同步信号的频率与屏幕的刷新频率Refresh相等,而Refresh是已知的, 那么两个屏幕刷新时间间隔t4=l/Refresh,那么相邻两个垂直同步信号的时间间隔是T_ diff=t4=l/Refresh ;
因为每两个相邻垂直同步信号的时间间隔是相等的,即为T_diff=t4=l/Refresh ;那 么各个垂直同步信号到来的系统时间之间成公差是乙肚€€的等差数列;
以该T_synCl时刻到来的垂直同步信号为第一个垂直同步信号,则第二个垂直同步 信号到来的系统时间为 T_sync2= T_syncl+T_diff= (Tl-TO)+ T_diff=[Tl-(t2_tl) ]+ T_ diff ;第三个垂直同步信号到来的系统时间为T_sync3= T_sync2+T_diff= (T_syncl+T_
diff) +T_diff= {[Tl-(t2-tl) ] +T_diff} +T_diff= [Tl-(t2_tl) ] + 2T_diff......第 η 个垂直
同步信号到来的系统时间是T_syncn= T_syncl+ (n-l)T_diff。开启垂直同步,每次垂直同步到来时,把多个窗口的图像数据渲染到缓冲区。本发明中通过获取到不开启垂直同步时,应用程序调用更新时的系统时间和更新 完成时间,进而可计算出更新一帧固定图像内容所需的时间;再获取到开启垂直同步时的 更新完成时间,并计算出两个相邻垂直同步信号时间的时间间隔,因各个垂直同步信号的 系统时间成等差数列,由此可以计算出个垂直同步信号到来的系统时间,系统可以提前知 道各垂直同步信号到来的时间,进而可以主动把多个窗口的图像数据渲染到缓冲区,提高 图像的帧率。图5是本发明的装置示意图,包括获取模块501、计算模块502和渲染模块503 ; 其中,获取模块501,用于当不启用垂直同步时,获取应用程序调用显示接口更新图像的系统时间tl、显示接口更新图像完成后的系统时间t2以及当开启垂直同步时,获取某一 次垂直同步信号到来时显示接口更新图像完成后的系统时间Tl ;
计算模块502,用于计算两个相邻垂直同步信号的时间差T_diff、根据获取模块中获 取的时间和T_diff来计算各垂直同步信号到来的系统时间T_syncn ;
渲染模块503,用于每次垂直同步信号到来时,把多个窗口的图像数据渲染到缓冲区。本发明中通过获取到不开启垂直同步时,应用程序调用更新时的系统时间和更新 完成时间,进而可计算出更新一帧固定图像内容所需的时间;再获取到开启垂直同步时的 更新完成时间,并计算出两个相邻垂直同步信号时间的时间间隔,因各个垂直同步信号的 系统时间成等差数列,由此可以计算出个垂直同步信号到来的系统时间;当垂直同步信号 到来时,把多个窗口的图像数据渲染到缓冲区。因为可以知道垂直同步信号到来的系统时 间,不用被动等待垂直同步信号到来再进行图像数据的渲染,在垂直同步信号与显示器刷 新图像间的时间差内,把多个窗口的图像数据渲染到缓冲区,这样在保证不出现图像撕裂 的情况下提高了图像的帧率。以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明 的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范 围之内。
权利要求
1.一种图像更新方法,其特征在于,包括步骤(1)当不启用垂直同步时,获取应用程序调用显示接口更新图像的系统时间tl;以及 获取所述显示接口更新图像完成后的系统时间t2 ;(2)当开启垂直同步时,获取某一次垂直同步信号到来时所述显示接口更新图像完成 后的系统时间T1 ;(3)根据所述tl、所述t2以及所述T1,计算所述垂直同步信号到来的系统时间T_ syncl ;(4)根据屏幕刷新率计算两个相邻垂直同步信号的时间差T_diff;(5)以所述T_synCl为基准,并根据所述T_diff,预先计算各个垂直同步信号到来的系 统时间T_syncn ;(6)每次垂直同步信号到来时,把多个窗口的图像数据渲染到缓冲区。
2.根据权利要求1所述的图像更新方法,其特征在于,用等差数列模型T_syncn=T_ syncl+ (n-l)T_diff求得各个垂直同步信号到来的系统时间T_syncn。
3.一种图像更新装置,其特征在于,包括获取模块,用于当不启用垂直同步时,获取应用程序调用显示接口更新图像的系统时 间tl、所述显示接口更新图像完成后的系统时间t2以及当开启垂直同步时,获取某一次垂 直同步信号到来时所述显示接口更新图像完成后的系统时间T1 ;计算模块,用于计算两个相邻垂直同步信号的时间差T_diff、根据获取模块中获取的 时间和所述T_diff来计算各垂直同步信号到来的系统时间T_syncn ;渲染模块,用于当每次垂直同步信号到来时,把多个窗口的图像数据渲染到缓冲区。
全文摘要
本发明公开了一种图像更新方法当不启用垂直同步时,获取调用更新的系统时间t1;获取更新完成后的系统时间t2;当开启垂直同步时,获取某一次垂直同步信号到来时更新完成后的系统时间T1;根据t1、t2以及T1,计算垂直同步信号到来的系统时间T_sync1;根据屏幕刷新率计算两个相邻垂直同步信号的时间差T_diff;以T_sync1为基准,并根据T_diff,预先获得各个垂直同步信号到来的系统时间T_syncn;每次垂直同步到来时,把多个窗口的图像数据渲染到缓冲区。本发明还公开了一种图像更新装置,克服了垂直同步更新图像时图像帧率低的问题。
文档编号G06F3/14GK102004620SQ201010536080
公开日2011年4月6日 申请日期2010年11月9日 优先权日2010年11月9日
发明者刘先材, 蔡才冠, 谷新征 申请人:广东威创视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1