專(zhuān)利名稱(chēng):一種開(kāi)放圖形庫(kù)的動(dòng)畫(huà)處理方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及動(dòng)畫(huà)技術(shù)領(lǐng)域,特別涉及ー種開(kāi)放圖形庫(kù)的動(dòng)畫(huà)處理方法和裝置。
背景技術(shù):
開(kāi)放圖形庫(kù)(OpenGraphics Library, Opengl)是ー種圖形程序接 ロ,Opengl 不支持動(dòng)態(tài)紋理,即不支持動(dòng)畫(huà)的原生支持。因此,在基于opengl的圖形圖象程序很多時(shí)候需要加入動(dòng)畫(huà),例如地理信息系統(tǒng)(geographic information system, GIS)的應(yīng)用,GIS包含底圖、矢量以及熱點(diǎn),其中熱點(diǎn)目前一般使用靜態(tài)圖片表現(xiàn);但是動(dòng)態(tài)的熱點(diǎn)表現(xiàn)カ要遠(yuǎn)遠(yuǎn)超過(guò)靜態(tài)的熱點(diǎn),因此如何能在此系統(tǒng)中加入動(dòng)態(tài)的熱點(diǎn),則成為是ー個(gè)重要的問(wèn)題。在其它圖形程序接ロ的探索過(guò)程中,有ー些方法曾經(jīng)被使用來(lái)實(shí)現(xiàn)加入動(dòng)畫(huà)的目 的,如多線(xiàn)程的處理方法。多線(xiàn)程的處理方法一般是為每ー個(gè)動(dòng)態(tài)元素開(kāi)ー個(gè)線(xiàn)程進(jìn)行處理?;谠O(shè)備資源限制目前在動(dòng)態(tài)元素較少的情況下可以實(shí)現(xiàn)預(yù)期的效果。發(fā)明人在實(shí)現(xiàn)本發(fā)明實(shí)施例的過(guò)程中發(fā)現(xiàn),多線(xiàn)程的處理方法存在如下問(wèn)題,由于每增加一個(gè)動(dòng)態(tài)元素需要開(kāi)ー個(gè)線(xiàn)程,這樣就會(huì)消耗較多的系統(tǒng)資源。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了ー種開(kāi)放圖形庫(kù)的動(dòng)畫(huà)處理方法和裝置,用于減少系統(tǒng)資源消耗。ー種開(kāi)放圖形庫(kù)的動(dòng)畫(huà)處理方法,包括獲取預(yù)定義的動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu);動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)包含紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù);從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度;將獲取到的源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度分別賦值給所述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù);初始化開(kāi)放圖形庫(kù)界面并啟動(dòng)開(kāi)放圖形庫(kù)界面渲染進(jìn)程;讀取動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu),并按照所述播放速度使用所述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)所述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖。ー種開(kāi)放圖形庫(kù)的動(dòng)畫(huà)處理裝置,包括結(jié)構(gòu)獲取単元,用于獲取預(yù)定義的動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu);動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)包含紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù);數(shù)據(jù)獲取単元,用于從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度;賦值單元,用于將獲取到的源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度分別賦值給所述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù);界面控制單元,用于初始化開(kāi)放圖形庫(kù)界面并啟動(dòng)開(kāi)放圖形庫(kù)界面渲染進(jìn)程;播放控制単元,用于讀取動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu),按照所述播放速度使用所述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)所述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖。
從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn)通過(guò)動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)對(duì)圖像幀進(jìn)行渲染和控制,不需要為每ー個(gè)動(dòng)態(tài)元素開(kāi)ー個(gè)線(xiàn)程,因此可以減少系統(tǒng)資源消耗。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)要介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的 前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實(shí)施例方法流程示意圖;圖2為本發(fā)明實(shí)施例裝置結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例另ー裝置結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例另ー裝置結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例另ー裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部份實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例提供了ー種開(kāi)放圖形庫(kù)的動(dòng)畫(huà)處理方法,如圖I所示,包括101 :獲取預(yù)定義的動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu);動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)包含紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù);后續(xù)實(shí)施例將就動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)的定義給出具體舉例說(shuō)明。102 :從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度;源數(shù)據(jù)是圖像幀數(shù)據(jù)可以有很多種類(lèi),可以為圖像互換格式(GraphicsInterchange Format, GIF)文件或視頻文件等均可,亦可為多巾貞相同大小的靜態(tài)圖像,本發(fā)明實(shí)施例對(duì)此并不予限定,通過(guò)對(duì)源數(shù)據(jù)的加載和解碼就可以得到紋理數(shù)據(jù)以及播放速度,還可以得到圖像的幀數(shù)等信息。103:將獲取到的源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度分別賦值給上述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù);104 :初始化開(kāi)放圖形庫(kù)界面并啟動(dòng)開(kāi)放圖形庫(kù)界面渲染進(jìn)程;開(kāi)放圖形庫(kù)的初始化在后續(xù)實(shí)施例中將給出具體舉例說(shuō)明。105:讀取動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu),并按照上述播放速度使用上述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)上述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖。采用本發(fā)明實(shí)施例方法,通過(guò)動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)對(duì)圖像幀進(jìn)行渲染和控制,不需要為每ー個(gè)動(dòng)態(tài)元素開(kāi)ー個(gè)線(xiàn)程,因此可以減少系統(tǒng)資源消耗。需要說(shuō)明的是上述目標(biāo)區(qū)域?yàn)閮蓚€(gè)或者兩個(gè)以上。目標(biāo)區(qū)域也可以只有ー個(gè)。如果目標(biāo)區(qū)域有兩個(gè)或者兩個(gè)以上,則使用一個(gè)動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)就能實(shí)現(xiàn)多個(gè)動(dòng)畫(huà)的播放。源數(shù)據(jù)可以有很多,均可以采用以上方案,對(duì)于每個(gè)數(shù)據(jù)源的實(shí)現(xiàn)不再一一贅述。進(jìn)ー步地,上述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)還包含巾貞數(shù)參數(shù);上述方法還包括從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的幀數(shù);將獲取到的幀數(shù)賦值給上述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的幀數(shù)參數(shù)。幀數(shù)參數(shù)可以用于對(duì)動(dòng)畫(huà)幀數(shù)的控制。進(jìn)ー步地,動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)還包含動(dòng)畫(huà)資源標(biāo)識(shí)參數(shù);上述方法還包括生成與源數(shù)據(jù)對(duì)應(yīng)的動(dòng)畫(huà)資源標(biāo)識(shí);并將生成的動(dòng)畫(huà)資源標(biāo)識(shí)賦值給上述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的動(dòng)畫(huà)資源標(biāo)識(shí)參數(shù)。采用動(dòng)畫(huà)標(biāo)識(shí)可以區(qū)分不同的動(dòng)畫(huà),在同時(shí)控制多個(gè)動(dòng)畫(huà)的時(shí)候可以用于區(qū)分不同的動(dòng)畫(huà)??蛇x地,上述紋理數(shù)據(jù)參數(shù)為紋理數(shù)組;從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的紋理數(shù)據(jù)包括從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的圖像幀;上述將獲取到的源數(shù)據(jù)的紋理數(shù)據(jù)賦值給上述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)參數(shù)包括按照上述源數(shù)據(jù)的圖像幀的顯示順序存 入紋理數(shù)組。本實(shí)施例給出了使用數(shù)組來(lái)存放紋理數(shù)據(jù)的實(shí)現(xiàn)方式,需要說(shuō)明的是紋理數(shù)據(jù)存放還可能有別的數(shù)據(jù)存儲(chǔ)形式,本發(fā)明實(shí)施例對(duì)此不予限定。由于源數(shù)據(jù)的紋理數(shù)據(jù)是不定長(zhǎng)的,紋理數(shù)組優(yōu)選設(shè)置成不定長(zhǎng)的數(shù)組。可選地,上述紋理數(shù)據(jù)圖形與上述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域互為相似圖形。相似圖形可以實(shí)現(xiàn)動(dòng)畫(huà)的表現(xiàn)效果。進(jìn)ー步地,上述方法還包括獲取當(dāng)前系統(tǒng)時(shí)間;依據(jù)上述當(dāng)前系統(tǒng)時(shí)間以及播放速度為上述紋理數(shù)據(jù)建立紋理貼圖索引;按照上述播放速度使用上述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)上述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖包括按照上述紋理貼圖索引用上述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)上述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖。以上給出了播放速度的控制方案舉例,需要說(shuō)明的是使用系統(tǒng)時(shí)間結(jié)合源數(shù)據(jù)攜帶的速度信息建立紋理貼圖索引并不是本發(fā)明實(shí)施例進(jìn)行速度控制的唯一實(shí)現(xiàn)方式,本發(fā)明實(shí)施例對(duì)此不予限定。進(jìn)ー步地,上述方法,還包括檢測(cè)系統(tǒng)刷新頻率,若系統(tǒng)刷新頻率低于預(yù)定頻率,則將開(kāi)放圖形庫(kù)界面渲染進(jìn)程休眠設(shè)定時(shí)間。由于圖形圖像程序的程序運(yùn)行邏輯是渲染線(xiàn)程根據(jù)變量的變化不斷的進(jìn)行渲染,一般會(huì)導(dǎo)致系統(tǒng)的資源利用較高;因此,可在對(duì)系統(tǒng)的刷新頻率要求不太苛刻的情況下(例如< 30fps),在渲染線(xiàn)程中加入休眠,如設(shè)置sleep (10),則可大大降低程序在系統(tǒng)中的資源利用。以源數(shù)據(jù)為GIF文件為例,對(duì)本發(fā)明實(shí)施例進(jìn)行舉例說(shuō)明。本發(fā)明實(shí)施例只需要為每一類(lèi)圖像互換格式(Graphics Interchange Format, GIF)創(chuàng)建一個(gè)紋理數(shù)組資源,并把源數(shù)據(jù)載入到紋理數(shù)組資源中(可通過(guò)開(kāi)源GIFA解碼庫(kù)提取其中的圖像幀數(shù)據(jù),亦可能采用其它方式提取其中的圖像幀數(shù)據(jù)),載入的源數(shù)據(jù)視不同的數(shù)據(jù)格式不同而可能有所差別,如gif可以使用解碼庫(kù)解碼成ー幀幀的圖象幀數(shù)據(jù),然后按播放順序加載到紋理數(shù) 組中。然后,動(dòng)畫(huà)的播放和渲染處理只需通過(guò)幾個(gè)動(dòng)態(tài)的參數(shù)進(jìn)行處理和控制,每ー份紋理資源數(shù)據(jù)可以渲染任意多個(gè)動(dòng)態(tài)實(shí)例。可通過(guò)參數(shù)控制播放速度。具體實(shí)現(xiàn)如下一、動(dòng)畫(huà)資源數(shù)據(jù)初始化I、定義動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)typedef struct textureArraylnfo {//樹(shù)形結(jié)構(gòu)紋理陣列信息
int id; //動(dòng)畫(huà)資源的標(biāo)識(shí)符
int frame;//幀數(shù)
int speed;//幀播放速度
GLuint texture[]//紋理數(shù)組
}tex Ary Info;其中,id為動(dòng)畫(huà)的標(biāo)識(shí)符,frame為動(dòng)畫(huà)的紋理的個(gè)數(shù)(紋理個(gè)數(shù)即動(dòng)畫(huà)的幀數(shù)),speed為此動(dòng)畫(huà)的顯示速度,常速可設(shè)為I, texture []為紋理數(shù)組。其中,id字段的作用是說(shuō)明數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)可以作為唯一的資源存在,這樣做 的好處是在多處創(chuàng)建或多處使用同一動(dòng)畫(huà)的數(shù)據(jù)時(shí),只需指定使用的特定動(dòng)畫(huà)數(shù)據(jù)id,減少數(shù)據(jù)的重復(fù)創(chuàng)建和存儲(chǔ);在存在較多動(dòng)畫(huà)資源的情況下,可通過(guò)id進(jìn)行資源的查找和調(diào)用。Speed字段是動(dòng)畫(huà)的播放速度,因每個(gè)資源中的動(dòng)畫(huà)的速度可能不同,可通過(guò)此參數(shù)進(jìn)行調(diào)節(jié)。texture[]為紋理數(shù)據(jù)(紋理是指物體表面的紋理即使物體表面呈現(xiàn)凹凸不平的溝紋,同時(shí)也包括在物體的光滑表面上的彩色圖案,通常我們更多地稱(chēng)之為花紋),它為不定長(zhǎng)數(shù)組,在未對(duì)源數(shù)據(jù)進(jìn)行解碼之前,無(wú)法知道源數(shù)據(jù)中的的總幀數(shù),在存放紋理數(shù)據(jù)前進(jìn)行動(dòng)態(tài)內(nèi)存分配。這樣做的優(yōu)點(diǎn)是無(wú)論源數(shù)據(jù)中的幀數(shù)是否相同,均使用同一個(gè)數(shù)據(jù)結(jié)構(gòu),為管理大量的動(dòng)畫(huà)資源提供基礎(chǔ)。2、創(chuàng)建動(dòng)畫(huà)資源實(shí)例創(chuàng)建動(dòng)畫(huà)資源實(shí)例texArylnfo giflnfo (該動(dòng)畫(huà)實(shí)例也可以直接采用動(dòng)畫(huà)資源數(shù)
據(jù)結(jié)構(gòu))
typedef struct texAry {
mt texia; mt frame; double speea;
GLuint texture [];
} stuTexAry;按照?qǐng)D像幀的顯示順序,將源數(shù)據(jù)圖像幀加載到動(dòng)畫(huà)資源實(shí)例的結(jié)構(gòu)中。本發(fā)明實(shí)施例對(duì)于源數(shù)據(jù)的類(lèi)型,不做特別限制,如gif文件或視頻文件等均可,亦可為多幀相同大小的靜態(tài)圖像,只需最終數(shù)據(jù)能夠滿(mǎn)足動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)的要求就可以。3、動(dòng)畫(huà)資源實(shí)例參數(shù)賦值獲取源數(shù)據(jù)的圖像幀的幀數(shù)和顯示速度(這里顯示速度也可以是延遲時(shí)間,效果相同),賦值到動(dòng)畫(huà)資源實(shí)例的對(duì)應(yīng)成員;其中動(dòng)畫(huà)資源的標(biāo)識(shí)符的生成可通過(guò)遞增的方式生成標(biāo)識(shí)符,亦可使用其它方式生成只要保證標(biāo)識(shí)在系統(tǒng)中的唯一性就可以了,然后將其賦值給紋理資源實(shí)例的id成員。ニ、opengl 窗ロ初始化I、opengl初始化,創(chuàng)建與動(dòng)畫(huà)相關(guān)的動(dòng)態(tài)變量Opengl初始化,視具體環(huán)境而不同,此處以初始化glut窗ロ環(huán)境為例
glutlnit (&argc, argv); //初始化
glutlnitDisplayMode (GLUT DOUBLE); //初始化顯示模式 glutlnitWindowSize (800, 800); //初始化窗 ロ 大小glutlnitWindowPosition (100, 100); //初始化窗 ロ 位置glutCreateWindow ("A Animation OpenGL Window”);//初始化創(chuàng)建窗ロ 一個(gè)動(dòng)態(tài)的OpenGL窗ロ2、啟動(dòng)opengl渲染線(xiàn)程(即開(kāi)始渲染,或繪圖),此處以glut窗ロ環(huán)境為例glutDisplayFunc (display);display O為渲染回調(diào)函數(shù)。三、動(dòng)畫(huà)播放I、使用動(dòng)畫(huà)資源實(shí)例數(shù)據(jù)進(jìn)行紋理貼圖使用動(dòng)畫(huà)資源實(shí)例中的紋理數(shù)組中的數(shù)據(jù)成員對(duì)目標(biāo)位置進(jìn)行紋理貼圖,具體可以是對(duì)目標(biāo)區(qū)域的多邊形進(jìn)行紋理貼圖,為創(chuàng)建正常的動(dòng)畫(huà)效果,目標(biāo)區(qū)域的多邊形的大小(長(zhǎng)寬比)需要與紋理數(shù)據(jù)的寬高比成比例(即相似);目標(biāo)區(qū)域亦可為其它類(lèi)型的多邊形,如三角形等,多種類(lèi)型目標(biāo)區(qū)域進(jìn)行紋理貼圖,可以得到特殊效果(如異形等)的動(dòng)畫(huà)效果。需要說(shuō)明的是可以使用同一個(gè)動(dòng)畫(huà)資源實(shí)例為多個(gè)(不限)目標(biāo)多邊形進(jìn)行紋理貼圖,以得到在不同位置多個(gè)動(dòng)畫(huà)的效果。2、變更動(dòng)畫(huà)變量currentframe (當(dāng)前系統(tǒng)時(shí)間,可以用于控制當(dāng)前場(chǎng)景的當(dāng)前所處的幀)動(dòng)畫(huà)變量currentframe,是動(dòng)畫(huà)的動(dòng)的重要因素。在渲染結(jié)束時(shí),會(huì)更新動(dòng)畫(huà)變量。動(dòng)畫(huà)速度的控制動(dòng)畫(huà)速度的控制相關(guān)的變量有可以有兩個(gè),動(dòng)畫(huà)變量currentframe,動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)的成員speed ;其中currentframe的單位為微秒,可以換算成百分之一秒(與動(dòng)畫(huà)播放速度的單位一致)。在貼圖的紋理中,此兩個(gè)變量為紋理索引值index的因數(shù),用于建立紋理索引。通過(guò)ー個(gè)動(dòng)畫(huà)變量控制多個(gè)不同幀數(shù)的動(dòng)畫(huà)播放,可以通過(guò)ー個(gè)重要的數(shù)據(jù)操作”摸”,又為mod,計(jì)算機(jī)語(yǔ)言中一般用” 來(lái)表示。幀紋理索引的變化Index = (currentframe*speed) % frame ;其中speed為GIF圖像巾貞播放時(shí)間的倒數(shù),在中貞播放過(guò)程中進(jìn)行currentframe的更新。采用本實(shí)施例在姆次渲染后會(huì)更新紋理索引。其中渲染一般是指圖像在顯存中創(chuàng)建的過(guò)程,本發(fā)明實(shí)施例是指利用此動(dòng)畫(huà)資源中的紋理數(shù)據(jù)貼圖的那個(gè)過(guò)程。對(duì)于其它過(guò)程不作限制。本發(fā)明實(shí)施例還提供了ー種開(kāi)放圖形庫(kù)的動(dòng)畫(huà)處理裝置,如圖2所示,包括結(jié)構(gòu)獲取単元201,用于獲取預(yù)定義的動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu);動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)包含紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù);數(shù)據(jù)獲取単元202,用于從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度;賦值單元203,用于將獲取到的源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度分別賦值給上述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù);界面控制單元204,用于初始化開(kāi)放圖形庫(kù)界面并啟動(dòng)開(kāi)放圖形庫(kù)界面渲染進(jìn)程;播放控制単元205,用于讀取動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu),按照上述播放速度使用上述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)上述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖。、采用本發(fā)明實(shí)施例裝置,通過(guò)動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)對(duì)圖像幀進(jìn)行渲染和控制,不需要為每ー個(gè)動(dòng)態(tài)元素開(kāi)ー個(gè)線(xiàn)程,因此可以減少系統(tǒng)資源消耗。進(jìn)ー步地,上述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)還包含巾貞數(shù)參數(shù);上述數(shù)據(jù)獲取単元202,還用于從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的幀數(shù);將獲取到的幀數(shù)賦值給上述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的幀數(shù)參數(shù)。進(jìn)ー步地,如圖3所示,動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)還包含動(dòng)畫(huà)資源標(biāo)識(shí)參數(shù);上述裝置還包括標(biāo)識(shí)生成単元301,用于生成與源數(shù)據(jù)對(duì)應(yīng)的動(dòng)畫(huà)資源標(biāo)識(shí);上述賦值單元203,還用于將生成的動(dòng)畫(huà)資源標(biāo)識(shí)賦值給上述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的動(dòng)畫(huà)資源標(biāo)識(shí)參數(shù)??蛇x地,上述紋理數(shù)據(jù)參數(shù)為紋理數(shù)組;上述數(shù)據(jù)獲取単元202,用于從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的紋理數(shù)據(jù)包括用于從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的圖像幀;上述賦值單元203,用于上述將獲取到的源數(shù)據(jù)的紋理數(shù)據(jù)賦值給上述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)參數(shù)包括按照上述源數(shù)據(jù)的圖像幀的顯示順序存入紋理數(shù)組。進(jìn)ー步地,如圖4所示,上述裝置,還包括索引建立単元401,用于獲取當(dāng)前系統(tǒng)時(shí)間;依據(jù)上述當(dāng)前系統(tǒng)時(shí)間以及播放速度為上述紋理數(shù)據(jù)建立紋理貼圖索引;上述播放控制単元205,具體用于按照上述紋理貼圖索引用上述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)上述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖。進(jìn)ー步地,如圖5所示,上述裝置,還包括休眠控制單元501,用于檢測(cè)系統(tǒng)刷新頻率,若系統(tǒng)刷新頻率低于預(yù)定頻率,則將開(kāi)放圖形庫(kù)界面渲染進(jìn)程休眠設(shè)定時(shí)間。值得注意的是,上述開(kāi)放圖形庫(kù)的動(dòng)畫(huà)處理裝置實(shí)施例中,所包括的各個(gè)單元只是按照功能邏輯進(jìn)行劃分的,但并不局限于上述的劃分,只要能夠?qū)崿F(xiàn)相應(yīng)的功能即可 ’另夕卜,各功能単元的具體名稱(chēng)也只是為了便于相互區(qū)分,并不用于限制本發(fā)明的保護(hù)范圍。另外,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各方法實(shí)施例中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,相應(yīng)的程序可以存儲(chǔ)于ー種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。以上僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明實(shí)施例揭 露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種開(kāi)放圖形庫(kù)的動(dòng)畫(huà)處理方法,其特征在于,包括 獲取預(yù)定義的動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu);動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)包含紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù); 從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度; 將獲取到的源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度分別賦值給所述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù); 初始化開(kāi)放圖形庫(kù)界面并啟動(dòng)開(kāi)放圖形庫(kù)界面渲染進(jìn)程; 讀取動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu),并按照所述播放速度使用所述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)所述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖。
2.根據(jù)權(quán)利要求I所述方法,其特征在于,所述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)還包含幀數(shù)參數(shù)和動(dòng)畫(huà)資源標(biāo)識(shí)參數(shù); 所述方法還包括從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的幀數(shù);將獲取到的幀數(shù)賦值給所述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的幀數(shù)參數(shù); 生成與源數(shù)據(jù)對(duì)應(yīng)的動(dòng)畫(huà)資源標(biāo)識(shí);并將生成的動(dòng)畫(huà)資源標(biāo)識(shí)賦值給所述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的動(dòng)畫(huà)資源標(biāo)識(shí)參數(shù)。
3.根據(jù)權(quán)利要求I所述方法,其特征在于,所述紋理數(shù)據(jù)圖形與所述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域互為相似圖形。
4.根據(jù)權(quán)利要求I至3任意一項(xiàng)所述方法,其特征在于,還包括獲取當(dāng)前系統(tǒng)時(shí)間;依據(jù)所述當(dāng)前系統(tǒng)時(shí)間以及播放速度為所述紋理數(shù)據(jù)建立紋理貼圖索引; 按照所述播放速度使用所述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)所述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖包括 按照所述紋理貼圖索引用所述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)所述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖。
5.根據(jù)權(quán)利要求I至3任意一項(xiàng)所述方法,其特征在于,還包括 檢測(cè)系統(tǒng)刷新頻率,若系統(tǒng)刷新頻率低于預(yù)定頻率,則將開(kāi)放圖形庫(kù)界面渲染進(jìn)程休眠設(shè)定時(shí)間。
6.一種開(kāi)放圖形庫(kù)的動(dòng)畫(huà)處理裝置,其特征在于,包括 結(jié)構(gòu)獲取單元,用于獲取預(yù)定義的動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu);動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)包含紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù); 數(shù)據(jù)獲取單元,用于從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度; 賦值單元,用于將獲取到的源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度分別賦值給所述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù); 界面控制單元,用于初始化開(kāi)放圖形庫(kù)界面并啟動(dòng)開(kāi)放圖形庫(kù)界面渲染進(jìn)程; 播放控制單元,用于讀取動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu),按照所述播放速度使用所述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)所述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖。
7.根據(jù)權(quán)利要求6所述裝置,其特征在于,所述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)還包含幀數(shù)參數(shù)和動(dòng)畫(huà)資源標(biāo)識(shí)參數(shù); 所述數(shù)據(jù)獲取單元,還用于從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的幀數(shù);將獲取到的幀數(shù)賦值給所述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的幀數(shù)參數(shù);所述裝置還包括 標(biāo)識(shí)生成單元,用于生成與源數(shù)據(jù)對(duì)應(yīng)的動(dòng)畫(huà)資源標(biāo)識(shí); 所述賦值單元,還用于將生成的動(dòng)畫(huà)資源標(biāo)識(shí)賦值給所述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的動(dòng)畫(huà)資源標(biāo)識(shí)參數(shù)。
8.根據(jù)權(quán)利要求6所述裝置,其特征在于,所述紋理數(shù)據(jù)參數(shù)為紋理數(shù)組; 所述數(shù)據(jù)獲取單元,用于從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的紋理數(shù)據(jù)包括用于從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的圖像幀; 所述賦值單元,用于所述將獲取到的源數(shù)據(jù)的紋理數(shù)據(jù)賦值給所述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)參數(shù)包括按照所述源數(shù)據(jù)的圖像幀的顯示順序存入紋理數(shù)組。
9.根據(jù)權(quán)利要求6至8任意一項(xiàng)所述裝置,其特征在于,還包括 索引建立單元,用于獲取當(dāng)前系統(tǒng)時(shí)間;依據(jù)所述當(dāng)前系統(tǒng)時(shí)間以及播放速度為所述紋理數(shù)據(jù)建立紋理貼圖索引; 所述播放控制單元,具體用于按照所述紋理貼圖索引用所述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)所述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖。
10.根據(jù)權(quán)利要求6至8任意一項(xiàng)所述裝置,其特征在于,還包括 休眠控制單元,用于檢測(cè)系統(tǒng)刷新頻率,若系統(tǒng)刷新頻率低于預(yù)定頻率,則將開(kāi)放圖形庫(kù)界面渲染進(jìn)程休眠設(shè)定時(shí)間。
全文摘要
本發(fā)明實(shí)施例公開(kāi)了一種開(kāi)放圖形庫(kù)的動(dòng)畫(huà)處理方法和裝置,本發(fā)明實(shí)施例方法包括獲取預(yù)定義的動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu);動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)包含紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù);從加載的源數(shù)據(jù)中獲取源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度;將獲取到的源數(shù)據(jù)的紋理數(shù)據(jù)以及播放速度分別賦值給所述動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)參數(shù)以及播放速度參數(shù);初始化開(kāi)放圖形庫(kù)界面并啟動(dòng)開(kāi)放圖形庫(kù)界面渲染進(jìn)程;讀取動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu),并按照所述播放速度使用所述資源數(shù)據(jù)結(jié)構(gòu)中的紋理數(shù)據(jù)對(duì)所述開(kāi)放圖形庫(kù)界面的目標(biāo)區(qū)域進(jìn)行紋理貼圖。通過(guò)動(dòng)畫(huà)資源數(shù)據(jù)結(jié)構(gòu)對(duì)圖像幀進(jìn)行渲染和控制,不需要為每一個(gè)動(dòng)態(tài)元素開(kāi)一個(gè)線(xiàn)程,因此可以減少系統(tǒng)資源消耗。
文檔編號(hào)G06T13/00GK102663796SQ20121011205
公開(kāi)日2012年9月12日 申請(qǐng)日期2012年4月16日 優(yōu)先權(quán)日2012年4月16日
發(fā)明者鄭鳳朝 申請(qǐng)人:廣東威創(chuàng)視訊科技股份有限公司