一種基於位圖緩存的矢量圖形顯示的加速方法
2023-04-22 17:38:31 1
專利名稱:一種基於位圖緩存的矢量圖形顯示的加速方法
技術領域:
本發明涉及Flash領域,特別涉及一種播放Flash(swf文件)時基於位圖緩存的 矢量圖形顯示的加速方法,尤其是在cpu速度受限的嵌入式設備上。
背景技術:
矢量圖形,是一種用數學函數來描述圖形位置、大小、形狀、色彩的格式。矢 量圖使用直線和曲線來描述圖形,基本組成元素是點、線、矩形、多邊形、圓和弧 線等,它們都是通過數學公式計算獲得的,所以矢量圖形文件體積一般比較小。矢 量圖形的優點是無論放大、縮小或旋轉等都不會失真,矢量圖與位圖的最大區別是 它不受解析度影響,在顯示或輸出圖像時,放大和縮小不會影響圖像的品質。
Flash (swf文件)是adobe公司一種基於矢量圖像的動畫。動畫以幀為單位, 幀之間獨立且間隔時間大約20 100ms,每幀上的可視對象都是定義的矢量圖形,因 此每幀動畫的顯示過程分為兩步首先對所有矢量圖形進行實時渲染,將矢量圖像 解析為基於像素點的位圖,然後將得到對應的位圖顯示在設備上。
現在各種常用圖形系統都支持對矢量圖形的渲染解析,但是矢量動畫的渲染對 處理器的速度要求很高。 一個圖形輪廓邊緣比較複雜的矢量圖形的渲染速度通常很 慢,因為圖像中每個象素點的值都是經過複雜的數學運算計算得到。 一般來說在個 人PC上,渲染速度可以達到實時顯示的要求,但是在嵌入式設備上,各種圖形系 統對矢量動畫的渲染速度非常慢,矢量動畫往往由於渲染速度問題不能實時顯示。 本專利發明為了解決在嵌入式設備上矢量動畫的渲染速度問題,採用一種使用位圖 緩存的加速方法,使flash文件在嵌入式環境下正常顯示。
發明內容
為了克服上述現有技術的問題,本發明提出了一種基於位圖緩存的矢量圖形顯 示的加速方法,加速矢量動畫在嵌入式環境下的顯示速度。在實際的flash文件中, 矢量圖形經常在多幀出現,如果每幀都對這些矢量圖形進行渲染,會耗費大量的時 間。而如果把第一次渲染之後的位像按照規定策略緩存起來,在以後顯示的時 候直接使用位圖緩存可以提高渲染速度。
為了達到上述目的,本發明提供了一種基於位圖緩存的矢量圖形顯示的加速方
3法,在矢量動畫的播放過程中,將連續顯示的複雜矢量對象的渲染結果緩存,當顯 示對象再次出現時,取出對應的位圖緩存對象,經過數學變換操作,直接顯示在指 定位置。
其中,在矢量動畫渲染播放之前,還包括預緩存策略,所述預緩存策略是在swf
文件解析過程中,遍歷所有幀上的所有不同的矢量顯示對象,預先渲染超複雜矢量
圖像,並將其對應的位圖對象緩存;所述超複雜矢量圖像的輪廓曲線數目大於60。 預緩存策略避免了在播放過程中實時渲染,提高了動畫總體渲染速度。
其中,在矢量動畫渲染播放時,該加速方法包括緩存選擇策略和緩存使用策略。 所述緩存選擇策略是根據矢量顯示對象連續出現的幀數目和描述矢量對象圖像 輪廓的曲線數目,判定該對象是否被緩存,如果矢量顯示對象連續超過3幀、圖像 輪廓的曲線數目為30 60,則該矢量顯示對象為複雜的連續矢量對象並將其對應的 位圖對象緩存。
所述緩存使用策略是取出位圖緩存對象時,將位圖緩存對象進行平移、放大、 縮小、旋轉或顏色漸變的數學變換操作。如果是平移操作,直接拷貝位圖到指定位 置;如果是放大時,需要做插值處理;如果是縮小操作,需要做亞採樣處理,如果 是旋轉操作,需要改變採樣方向;如果是顏色漸變,需要進行顏色變換。經過各種 變換操作後的位圖數據可以用於顯示對象的顯示。
其中,該加速方法還包括緩存壓縮保存策略,所述緩存壓縮保存策略是在嵌入 式環境內存受限制的情況下,位圖緩存對象採用簡單的遊程編碼壓縮算法保存。
其中,該加速方法還包括緩存替換策略,所述緩存替換策略是指在緩存空間不 足時,採用最近使用策略和緩存優先級策略整理緩存空間;所述最近使用策略指所 有位圖緩存對象有一個成員標識最近被使用幀號,每次刪除最久未使用的幀;所述 優先級策略指所有位圖緩存對象有一個成員標識該緩存的優先級大小,首先淘汰優 先級低的緩存;所述優先級的大小由描述該位圖緩存對象對應的矢量圖像的輪廓曲 線數目與該位圖緩存對象佔用空間的大小的比值確定。
本發明的優點在於
1、 本發明提供的基於位圖緩存的矢量圖形顯示的加速方法,由於增加了位圖緩 存,矢量圖像在渲染時,可以省去大量計算,節省了多次渲染矢量圖像的時間,加 快了矢量動畫的顯示速度。
2、 本發明提供的基於位圖緩存的矢量圖形顯示的加速方法,在不同的嵌入式環 境下,內存容量和處理速度可能不一樣,可以根據內存容量大小調節緩存容量的大 小,根據處理速度不同更改複雜圖像邊緣曲線數目的門限值,最好的發揮位圖緩存
4系統的作用。
3、 本發明提供的基於位圖緩存的矢量圖形顯示的加速方法,該加速方法的緩存 系統的操作比較簡單,每個位圖緩存對象只需要保存該位圖對象對應矢量對象的ID 號,長寬和位圖數據,以及用於淘汰策略的優先級和最近使用幀號,用一個簡單的 鍊表就可以實現所用功能。
4、 本發明提供的基於位圖緩存的矢量圖形顯示的加速方法,該加速方法對矢量 動畫具體渲染步驟以及播放流程透明,不影響矢量動畫的播放過程,可以作為可選 項和其他加速方法一起使用。
圖1現有技術的矢量動畫的播放過程;
圖2本發明的位圖緩存方法的工作流程圖。
具體實施例方式
本發明提出了一種基於位圖緩存的矢量圖形顯示的加速方法,加速矢量動畫在 嵌入式環境下的顯示速度。在實際的flash文件中,矢量圖形經常在多幀出現,如果 每幀都對這些矢量圖形進行渲染,會耗費大量的時間。而如果把第一次渲染之後的 圖像按照規定策略緩存起來,在以後顯示的時候直接使用緩存的圖像可以提高渲染 速度。
如圖1所示是傳統矢量動畫的渲染過程。矢量動畫有許多幀組成,每幀之間播 放時間間隔為t,幀中定義的圖形對象先經過預解析成矢量對象,在幀播放間隔時間 t內,圖形系統必須渲染所有矢量圖像對象,最後把位圖結果顯示出來。這個過程中, 為了提高顯示速度,我們可以將複雜圖形預先渲染並保存為位圖(主動緩存策略), 那麼圖形系統渲染複雜矢量對象的時候,我們可以直接取出複雜圖形的緩存位圖, 經過適當變換就可以直接顯示出來。
如圖2所示是位圖緩存方法的工作流程圖。首先在矢量動畫的解析過程中,矢 量動畫播放之前,根據預先緩存策略,預先渲染超複雜矢量圖形(輪廓邊緣數目>60 ), 並將位圖緩存起來。在矢量動畫播放過程中,圖形系統收到一個矢量圖形的渲染請 求之後,並不直接渲染,首先判斷該矢量圖形是否己經緩存過,如果已經緩存,取 出位圖緩存,在進行必要處理操作以後直接顯示出來;如果沒有緩存首先根據緩 存選擇策略判斷是否可緩存,如果不需要緩存,直接渲染並顯示;如果需要緩存, 首先檢查緩存空間大小,在緩存空間不足時按照最近使用策略和優先級策略整理位圖緩存對象,然後渲染矢量圖形,將渲染後的位圖緩存對象採用壓縮保存,然後顯 示出來。
基於位圖緩存的加速方法可以描述為以下流程
a) 採用預先緩存策略對所有顯示對象預處理,將超複雜對象預渲染後得到的位
圖數據緩存。
b) 矢量動畫在播放過程中渲染時,將複雜的連續對象渲染得到的位圖數據緩存。
c) 位圖緩存對象採用壓縮保存策略。
d) 釆用最近使用策略和緩存優先級策略管理位圖緩存對象。
e) 顯示對象再次出現時,不再進行渲染計算,取出對應的位圖緩存對象,經 過簡單處理,直接顯示在指定位置。
在上述方法中,顯示對象是指在矢量動畫中出現的矢量圖像對象,每個對象都 是獨立的實體,具有顏色、形狀、輪廓、大小和屏幕位置等屬性。可以在維持它原 有解析度和曲率的同時,獨立的進行移動和屬性的改變,而不會影響其它對象。
在上述方法中,連續對象是指在flash動畫中,某個顯示對象在此後連續的幾幀 或幾十幀中,保持原位置或者進行平移、縮放、旋轉操作或者進行顏色變換。據統 計,在實際的FLASH動畫中,超過卯%的對象屬於連續對象。複雜對象是指描述 圖像輪廓的曲線數目比較多的矢量對象,這些矢量圖像的渲染速度很慢。據統計, 20%的複雜對象佔用了 70%的渲染時間,而且大部分複雜圖形都是小尺寸圖形。而 複雜的連續對象是指在矢量動畫中,連續數幀出現的圖像輪廓比較複雜的矢量對象, 超複雜對象是指特別複雜(描述圖像輪廓的曲線數目>60)的矢量對象。對於複雜對 象,會耗費大量的渲染時間。
在上述方法中,位圖緩存對象是指矢量圖形經過圖形系統渲染後將要直接顯示 出來的圖像數據,以象素點為單位保存成位圖。
在上述方法的(a)部分中,預先緩存策略指的是swf文件在解析過程中,動畫渲 染之前提前渲染並緩存所有幀中的超複雜對象,避免在播放過程中實時渲染,提高 動畫總體渲染速度。
在上述方法的(b)部分中,通過統計顯示對象連續出現的幀數目和描述圖像輪廓 的曲線數目,可以判定該對象是否應該被緩存。如果屬於複雜的連續對象,把該矢 量對象被渲染後得到的位圖數據保存到的緩存系統中。
在上述方法的(C)部分中,緩存壓縮保存策略是指在嵌入式環境內存受限制的
情況下,位圖採用簡單的遊程編碼壓縮算法(RLE)保存。在空間一定的條件下,增加位圖緩存對象數目。
在上述方法的(d)部分中,由於一般嵌入式平臺的資源受限,無法緩存太多的圖 形。在緩存總量大小限制的條件下,當增加新的位圖緩存對象導致緩存空間不足時, 採用最近使用策略和緩存優先級策略機制管理位圖緩存對象。最近使用策略指所有 位圖緩存對象有一個成員標識最近被使用幀號,每次刪除最久未使用的幀。優先級 策略指所有位圖緩存對象有一個成員標識該緩存的優先級大小,當緩存空間不足的 時候,首先淘汰優先級低的緩存。優先級的大小由描述該位圖緩存對象對應的矢量 圖像的輪廓曲線數目與該位圖緩存對象佔用空間大小的比值確定,比值越大優先級 越高。
在上述方法的(e)部分中,如果顯示對象再次要被渲染而且對應緩存存在時,不 需要再進行渲染計算,可利用對應的位圖緩存對象。顯示對象相對於其初次被緩存 時的屬性,可能會平移、放大、縮小、旋轉或者顏色漸變等操作,所以不能直接使 用緩存數據。如果是平移操作,直接拷貝位圖到指定位置;如果是放大時,需要做 插值處理;如果是縮小操作,需要做亞採樣處理,如果是旋轉操作,需要改變採樣 方向;如果是顏色漸變,需要進行顏色變換。經過各種變換操作後的位圖數據可以 用於顯示對象的顯示。
權利要求
1、一種基於位圖緩存的矢量圖形顯示的加速方法,其特徵在於,在矢量動畫的播放過程中,將連續顯示的複雜矢量對象的渲染結果緩存,當顯示對象再次出現時,取出對應的位圖緩存對象,經過數學變換操作,直接顯示在指定位置。
2、 根據權利要求1所述的加速方法,其特徵在於,在矢量動畫渲染播放之前,還包括預緩存策略,所述預緩存策略是在swf文件解析過程中,遍歷所有幀上的所有不同的矢量顯示對象,預先渲染超複雜矢量圖像,並將其對應的位圖對象緩存;所述超複雜矢量圖像的輪廓曲線數目大於60。
3、 根據權利要求1所述的加速方法,其特徵在於,在矢量動畫渲染播放時,該加速方法包括緩存選擇策略和緩存使用策略;所述緩存選擇策略是根據矢量顯示對象連續出現的幀數目和描述矢量對象圖像輪廓的曲線數目,判定該對象是否被緩存,如果矢量顯示對象連續超過3幀、圖像輪廓的曲線數目為30 60,則該矢量顯示對象為複雜的連續矢量對象,並將其對應的位圖對象緩存;所述緩存使用策略是取出位圖緩存對象時,將位圖緩存對象進行平移、放大、縮小、旋轉或顏色漸變的數學變換操作。
4、 根據權利要求1所述的加速方法,其特徵在於,該加速方法還包括緩存壓縮保存策略,所述緩存壓縮保存策略是在嵌入式環境內存受限制的情況下,位圖緩存對象採用簡單的遊程編碼壓縮算法保存。
5、 根據權利要求1所述的加速方法,其特徵在於,該加速方法還包括緩存替換策略,所述緩存替換策略是指在緩存空間不足時,採用最近使用策略和緩存優先級策略整理緩存空間;所述最近使用策略指所有位圖緩存對象有一個成員標識最近被使用幀號,每次刪除最久未使用的幀;所述優先級策略指所有位圖緩存對象有一個成員標識該緩存的優先級大小,首先淘汰優先級低的緩存;所述優先級的大小由描述該位圖緩存對象對應的矢量圖像的輪廓曲線數目與該位圖緩存對象佔用空間的大小的比值確定。
全文摘要
本發明涉及一種基於位圖緩存的矢量圖形顯示的加速方法,該方法在矢量動畫的播放過程中,將連續顯示的複雜矢量對象的渲染結果緩存,當顯示對象再次出現時,取出對應的位圖緩存對象,經過變換操作,直接顯示在指定位置。該加速方法包括預緩存策略,緩存選擇策略,緩存使用策略,緩存壓縮保存策略和緩存替換策略。其優點在於省去大量計算,節省渲染矢量圖像的時間,加快顯示速度;根據嵌入實式設備的內存大小和處理速度的不同,調整緩存容量大小和複雜圖形的邊緣曲線門限達到最佳效果;操作簡單,只保存矢量對象的ID號,長寬,位圖數據,優先級和最近使用幀號,用一個簡單的鍊表即可實現;渲染步驟及播放流程透明,不影響矢量動畫的播放過程。
文檔編號G06T1/60GK101470893SQ20081017252
公開日2009年7月1日 申請日期2008年10月29日 優先權日2007年12月26日
發明者建 劉, 孫曉輝, 春 王, 王勁林, 冰 胡, 曉 陳 申請人:中國科學院聲學研究所