專利名稱:一種圖像更新方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像處理領(lǐng)域,尤其涉及一種圖像更新方法及裝置。
背景技術(shù):
計算機從顯卡到顯示器的一個簡單圖像顯示的流程計算機系統(tǒng)應(yīng)用調(diào)用接口, 顯卡把圖像數(shù)據(jù)寫入顯示緩沖區(qū),而把顯示緩沖區(qū)中的數(shù)據(jù)讀取傳輸?shù)斤@示器,顯示器負 責(zé)把數(shù)據(jù)顯示于屏幕上。系統(tǒng)把圖像數(shù)據(jù)“寫入”顯卡顯示緩沖區(qū),顯示器“讀取”顯示緩沖區(qū)的圖像數(shù)據(jù)并 顯示。這兩個步驟在沒有任何限制的前提下,有可能發(fā)生兩個步驟同時執(zhí)行的情況,在某一 時刻,顯卡在完成第i幀圖像“寫入”緩沖區(qū)操作后,正在進行第i+1幀圖像“寫入”緩沖區(qū) 操作時,顯示器同步在執(zhí)行從緩沖區(qū)讀取操作,那么顯示器讀取的圖像數(shù)據(jù)就是第i幀與 第i+1幀的組合圖像——即一部分是第i幀的圖像,而剩下的部分是第i+1幀的圖像。看 起來就像圖像撕裂成兩部分一樣。這種現(xiàn)象就是圖像顯示的“圖像撕裂”現(xiàn)象。解決圖形 撕裂的一種通用方法是“垂直同步”。當(dāng)應(yīng)用程序采用垂直同步方法來更新圖像時,必須等到垂直同步信號才能往顯示 緩沖區(qū)寫入圖像數(shù)據(jù),而顯示安裝指定的頻率繪制刷新屏幕圖像。垂直同步信號的頻率與 屏幕刷新頻率相等,即兩個垂直同步信號與兩個屏幕繪制刷新間的時間差是相等的。而垂 直同步信號與顯示器繪制刷新圖像間有一定的時間差,由于現(xiàn)代顯卡的強勁繪圖能力,所 以該時間差足夠顯卡完成圖像數(shù)據(jù)的寫入工作,從而避免顯卡與顯示器兩者同時操作顯示 緩沖區(qū),進而解決了上述的圖像更新時“畫面撕裂”問題。但是當(dāng)屏幕的刷新率一定(假設(shè)為60Hz),多窗口同時使用垂直同步方法更新圖 像,單個窗口的平均幀率為60/n FPS (Frames Per Second)。即隨著窗口個數(shù)的上升,單個 窗口的平均幀率線性下降。當(dāng)使用垂直同步更新圖像時,系統(tǒng)往顯示緩沖區(qū)更新圖像數(shù)據(jù) 的幀率是一定的。如圖1所示,假設(shè)有2個窗口的圖像需要更新,由于沒有相應(yīng)的接口函數(shù) 可以獲取垂直同步信號的具體時間,不知道垂直同步信號什么時候到來,更新時只能阻塞 等待垂直同步信號的到來,每個垂直同步信號到來時只更新一個窗口的圖像數(shù)據(jù),顯卡的 性能沒有得到充分地發(fā)揮。
發(fā)明內(nèi)容
本發(fā)明公開了一種圖像更新方法及裝置,可以克服垂直同步更新圖像時圖像幀率 低的問題?!N圖像更新方法,其特征在于,包括步驟
(1)當(dāng)不啟用垂直同步時,獲取應(yīng)用程序調(diào)用顯示接口更新圖像的系統(tǒng)時間tl;以及 獲取所述顯示接口更新圖像完成后的系統(tǒng)時間t2 ;
(2)當(dāng)開啟垂直同步時,獲取某一次垂直同步信號到來時所述顯示接口更新圖像完成 后的系統(tǒng)時間Tl ;(3)根據(jù)所述tl、所述t2以及所述Tl,計算所述垂直同步信號到來的系統(tǒng)時間T_ syncl ;
(4)根據(jù)屏幕刷新率計算兩個相鄰垂直同步信號的時間差T_diff;
(5)以所述T_synCl為基準,并根據(jù)所述T_diff,預(yù)先計算各個垂直同步信號到來的系 統(tǒng)時間T_syncn ;
(6)每次垂直同步信號到來時,把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū)。本發(fā)明還公開了一種圖像更新裝置,其特征在于,包括
獲取模塊,用于當(dāng)不啟用垂直同步時,獲取應(yīng)用程序調(diào)用顯示接口更新圖像的系統(tǒng)時 間tl、所述顯示接口更新圖像完成后的系統(tǒng)時間t2以及當(dāng)開啟垂直同步時,獲取某一次垂 直同步信號到來時所述顯示接口更新圖像完成后的系統(tǒng)時間Tl ;
計算模塊,用于計算兩個相鄰垂直同步信號的時間差T_diff、根據(jù)獲取模塊中獲取的 時間和所述T_diff來計算各垂直同步信號到來的系統(tǒng)時間T_syncn ;
渲染模塊,用于當(dāng)每次垂直同步信號到來時,把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū)。本發(fā)明中通過獲取到不開啟垂直同步時,應(yīng)用程序調(diào)用更新時的系統(tǒng)時間和更新 完成時間,進而可計算出更新一幀固定圖像內(nèi)容所需的時間;再獲取到開啟垂直同步時的 更新完成時間,并計算出兩個相鄰垂直同步信號時間的時間間隔,因各個垂直同步信號的 系統(tǒng)時間成等差數(shù)列,由此可以計算出個垂直同步信號到來的系統(tǒng)時間;當(dāng)垂直同步信號 到來時,把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū)。因為可以提前知道垂直同步信號到來的系 統(tǒng)時間,不用被動等待垂直同步信號到來再進行圖像數(shù)據(jù)的渲染,在垂直同步信號到來與 顯示器刷新圖像間的時間差內(nèi),把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū),提高了圖像的幀率。
圖1是一個垂直同步圖像更新流程圖; 圖2是本發(fā)明方法的一個流程圖3是不啟動垂直同步時的圖像更新流程圖; 圖4是另一個垂直同步圖像更新流程圖; 圖5是本發(fā)明的裝置示意圖。
具體實施例方式參考圖2,本發(fā)明公開了一種圖像更新方法,具體步驟如下
201、當(dāng)不啟用垂直同步時,獲取調(diào)用更新時間tl以及更新完成時間t2;
當(dāng)不啟用垂直同步時,獲取應(yīng)用程序調(diào)用顯示接口更新圖像的系統(tǒng)時間tl ;以及獲取 顯示接口更新圖像完成后的系統(tǒng)時間t2 ;
202、當(dāng)開啟垂直同步時,獲取某一次垂直同步信號到來時更新完成的時間Tl;
當(dāng)開啟垂直同步時,獲取某一次垂直同步信號到來時顯示接口更新圖像完成后的系統(tǒng) 時間Tl。203、根據(jù)tl、t2以及Tl,計算垂直同步信號到來的系統(tǒng)時間T_synCl ;
204、根據(jù)屏幕刷新率計算兩個相鄰垂直同步信號的時間差T_diff;
205、預(yù)先計算各個垂直同步信號到來的系統(tǒng)時間T_syncn;以T_syncl為基準,并根據(jù)T_diff,預(yù)先計算各個垂直同步信號到來的系統(tǒng)時間τ_ Syncn0206、多窗口圖像數(shù)據(jù)渲染。每次垂直同步信號到來時,把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū)。本發(fā)明中通過獲取到不開啟垂直同步時,應(yīng)用程序調(diào)用更新時的系統(tǒng)時間和更新 完成時間,進而可計算出更新一幀固定圖像內(nèi)容所需的時間;再獲取到開啟垂直同步時的 更新完成時間,并計算出兩個相鄰垂直同步信號時間的時間間隔,因各個垂直同步信號的 系統(tǒng)時間成等差數(shù)列,由此可以計算出個垂直同步信號到來的系統(tǒng)時間;當(dāng)垂直同步信號 到來時,把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū)。因為可以知道垂直同步信號到來的系統(tǒng)時 間,不用被動等待垂直同步信號到來再進行圖像數(shù)據(jù)的渲染,在垂直同步信號到來與顯示 器刷新圖像間的時間差內(nèi),把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū),提高了圖像的幀率。下面介紹本發(fā)明方法的一個實施例
不開啟垂直同步時,參考圖3,獲取應(yīng)用程序調(diào)用顯示接口更新圖像的系統(tǒng)時間tl ;因 為不開啟垂直同步時應(yīng)用程序調(diào)用顯示接口更新圖像的系統(tǒng)時間與顯卡實際開始更新的 系統(tǒng)時間是同一時間,那么獲取到該顯示接口更新圖像完成后的系統(tǒng)時間t2后;就可以計 算出更新一幀固定圖像內(nèi)容所需的時間TO ;T0=t2-tl ;
參考圖4,開啟垂直同步的情況下,獲取某一次垂直同步信號到來時該顯示接口更新圖 像完成后的系統(tǒng)時間Tl ;
因為Tl由2部分的時間組成更新一幀固定圖像內(nèi)容所需的時間TO和垂直同步信號 到來的時間 T_syncl,那么 T_syncl=Tl_T0;
因為垂直同步信號的頻率與屏幕的刷新頻率Refresh相等,而Refresh是已知的, 那么兩個屏幕刷新時間間隔t4=l/Refresh,那么相鄰兩個垂直同步信號的時間間隔是T_ diff=t4=l/Refresh ;
因為每兩個相鄰垂直同步信號的時間間隔是相等的,即為T_diff=t4=l/Refresh ;那 么各個垂直同步信號到來的系統(tǒng)時間之間成公差是乙肚€€的等差數(shù)列;
以該T_synCl時刻到來的垂直同步信號為第一個垂直同步信號,則第二個垂直同步 信號到來的系統(tǒng)時間為 T_sync2= T_syncl+T_diff= (Tl-TO)+ T_diff=[Tl-(t2_tl) ]+ T_ diff ;第三個垂直同步信號到來的系統(tǒng)時間為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ǒng)時間是T_syncn= T_syncl+ (n-l)T_diff。開啟垂直同步,每次垂直同步到來時,把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū)。本發(fā)明中通過獲取到不開啟垂直同步時,應(yīng)用程序調(diào)用更新時的系統(tǒng)時間和更新 完成時間,進而可計算出更新一幀固定圖像內(nèi)容所需的時間;再獲取到開啟垂直同步時的 更新完成時間,并計算出兩個相鄰垂直同步信號時間的時間間隔,因各個垂直同步信號的 系統(tǒng)時間成等差數(shù)列,由此可以計算出個垂直同步信號到來的系統(tǒng)時間,系統(tǒng)可以提前知 道各垂直同步信號到來的時間,進而可以主動把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū),提高 圖像的幀率。圖5是本發(fā)明的裝置示意圖,包括獲取模塊501、計算模塊502和渲染模塊503 ; 其中,獲取模塊501,用于當(dāng)不啟用垂直同步時,獲取應(yīng)用程序調(diào)用顯示接口更新圖像的系統(tǒng)時間tl、顯示接口更新圖像完成后的系統(tǒng)時間t2以及當(dāng)開啟垂直同步時,獲取某一 次垂直同步信號到來時顯示接口更新圖像完成后的系統(tǒng)時間Tl ;
計算模塊502,用于計算兩個相鄰垂直同步信號的時間差T_diff、根據(jù)獲取模塊中獲 取的時間和T_diff來計算各垂直同步信號到來的系統(tǒng)時間T_syncn ;
渲染模塊503,用于每次垂直同步信號到來時,把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū)。本發(fā)明中通過獲取到不開啟垂直同步時,應(yīng)用程序調(diào)用更新時的系統(tǒng)時間和更新 完成時間,進而可計算出更新一幀固定圖像內(nèi)容所需的時間;再獲取到開啟垂直同步時的 更新完成時間,并計算出兩個相鄰垂直同步信號時間的時間間隔,因各個垂直同步信號的 系統(tǒng)時間成等差數(shù)列,由此可以計算出個垂直同步信號到來的系統(tǒng)時間;當(dāng)垂直同步信號 到來時,把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū)。因為可以知道垂直同步信號到來的系統(tǒng)時 間,不用被動等待垂直同步信號到來再進行圖像數(shù)據(jù)的渲染,在垂直同步信號與顯示器刷 新圖像間的時間差內(nèi),把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū),這樣在保證不出現(xiàn)圖像撕裂 的情況下提高了圖像的幀率。以上所述的本發(fā)明實施方式,并不構(gòu)成對本發(fā)明保護范圍的限定。任何在本發(fā)明 的精神和原則之內(nèi)所作的修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的權(quán)利要求保護范 圍之內(nèi)。
權(quán)利要求
1.一種圖像更新方法,其特征在于,包括步驟(1)當(dāng)不啟用垂直同步時,獲取應(yīng)用程序調(diào)用顯示接口更新圖像的系統(tǒng)時間tl;以及 獲取所述顯示接口更新圖像完成后的系統(tǒng)時間t2 ;(2)當(dāng)開啟垂直同步時,獲取某一次垂直同步信號到來時所述顯示接口更新圖像完成 后的系統(tǒng)時間T1 ;(3)根據(jù)所述tl、所述t2以及所述T1,計算所述垂直同步信號到來的系統(tǒng)時間T_ syncl ;(4)根據(jù)屏幕刷新率計算兩個相鄰垂直同步信號的時間差T_diff;(5)以所述T_synCl為基準,并根據(jù)所述T_diff,預(yù)先計算各個垂直同步信號到來的系 統(tǒng)時間T_syncn ;(6)每次垂直同步信號到來時,把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū)。
2.根據(jù)權(quán)利要求1所述的圖像更新方法,其特征在于,用等差數(shù)列模型T_syncn=T_ syncl+ (n-l)T_diff求得各個垂直同步信號到來的系統(tǒng)時間T_syncn。
3.一種圖像更新裝置,其特征在于,包括獲取模塊,用于當(dāng)不啟用垂直同步時,獲取應(yīng)用程序調(diào)用顯示接口更新圖像的系統(tǒng)時 間tl、所述顯示接口更新圖像完成后的系統(tǒng)時間t2以及當(dāng)開啟垂直同步時,獲取某一次垂 直同步信號到來時所述顯示接口更新圖像完成后的系統(tǒng)時間T1 ;計算模塊,用于計算兩個相鄰垂直同步信號的時間差T_diff、根據(jù)獲取模塊中獲取的 時間和所述T_diff來計算各垂直同步信號到來的系統(tǒng)時間T_syncn ;渲染模塊,用于當(dāng)每次垂直同步信號到來時,把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū)。
全文摘要
本發(fā)明公開了一種圖像更新方法當(dāng)不啟用垂直同步時,獲取調(diào)用更新的系統(tǒng)時間t1;獲取更新完成后的系統(tǒng)時間t2;當(dāng)開啟垂直同步時,獲取某一次垂直同步信號到來時更新完成后的系統(tǒng)時間T1;根據(jù)t1、t2以及T1,計算垂直同步信號到來的系統(tǒng)時間T_sync1;根據(jù)屏幕刷新率計算兩個相鄰垂直同步信號的時間差T_diff;以T_sync1為基準,并根據(jù)T_diff,預(yù)先獲得各個垂直同步信號到來的系統(tǒng)時間T_syncn;每次垂直同步到來時,把多個窗口的圖像數(shù)據(jù)渲染到緩沖區(qū)。本發(fā)明還公開了一種圖像更新裝置,克服了垂直同步更新圖像時圖像幀率低的問題。
文檔編號G06F3/14GK102004620SQ201010536080
公開日2011年4月6日 申請日期2010年11月9日 優(yōu)先權(quán)日2010年11月9日
發(fā)明者劉先材, 蔡才冠, 谷新征 申請人:廣東威創(chuàng)視訊科技股份有限公司