亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于OpenGLES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法

文檔序號:6537387閱讀:772來源:國知局
基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法
【專利摘要】基于OpenGL?ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法,涉及一個輕量級的圖形框架系統(tǒng)。它是為了解決目前全由于液晶汽車儀表內(nèi)部原理復(fù)雜、設(shè)計難度高、對硬件要求高而造成的全液晶汽車儀表設(shè)計成本高的問題。本發(fā)明減少在框架之上的設(shè)計成本和代碼量,便于代碼的維護(hù)和版本升級;內(nèi)部原理簡單、設(shè)計容易,開發(fā)人員可以靈活的在框架的基礎(chǔ)上實現(xiàn)各種預(yù)期效果,設(shè)計應(yīng)用于汽車儀表各顯示組件的實現(xiàn)方法;描述的圖形框架系統(tǒng)底層只依賴于OpenGL?ES圖形庫,而該圖形庫已經(jīng)被移植到各個操作系統(tǒng)中,在作出微小的修改后在不同的操作系統(tǒng)間移植,提高了系統(tǒng)的可復(fù)用性和可移植性。本發(fā)明適用于一個輕量級的圖形框架系統(tǒng)。
【專利說明】基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一個輕量級的圖形框架系統(tǒng)。
【背景技術(shù)】
[0002]汽車儀表自誕生以來,已有一個多世紀(jì)的歷史,隨著電力電子技術(shù)的不斷發(fā)展,汽車儀表也經(jīng)歷了很多重大的變革。按汽車儀表工作原理的不同,可以大致分為三代。第一代汽車儀表是基于機(jī)械作用力而工作的機(jī)械式儀表,即機(jī)械機(jī)芯表;第二代汽車儀表是基于各種傳感器將非電量轉(zhuǎn)換成電信號,成為電氣式儀表;第三類汽車儀表以步進(jìn)電機(jī)控制指針的轉(zhuǎn)動,這是一種網(wǎng)絡(luò)化、智能化的全數(shù)字汽車儀表。目前的汽車儀表多為第三代儀表,它不僅可以通過脈沖來控制步進(jìn)電機(jī)驅(qū)動指針,同時也具有智能處理單元和信息交互單元,從而實現(xiàn)整車的儀表一體化控制。
[0003]第三代汽車儀表由于受到硬件的限制,能夠呈現(xiàn)給駕駛?cè)说男畔⒂邢?,且顯示方式不夠靈活。隨著汽車電子技術(shù)的飛速發(fā)展,利用嵌入式技術(shù)開發(fā)的全數(shù)字式汽車儀表盤在不久的將來必將取代傳統(tǒng)的汽車儀表。以全液晶汽車儀表代替第三代汽車儀表,將使新一代的汽車儀表顯示內(nèi)容豐富、精確、直觀,讀取信息更加容易,也給駕駛?cè)藥砹烁玫挠脩趔w驗。
[0004]儀表盤作為汽車的綜合信息顯示中心,在汽車中的地位相當(dāng)重要,汽車儀表不僅包含里程表速度表等為駕駛員提供機(jī)車行駛信息,也在汽車故障狀態(tài)下采取相應(yīng)的操作來警示駕駛員,保證汽車安全正常的工作。汽車儀表盤已經(jīng)成為現(xiàn)代汽車的信息中心,越來越需要完善,提供更加準(zhǔn)確的汽車行駛信息。汽車儀表盤應(yīng)至少包含速度指示盤,警告燈,轉(zhuǎn)向燈等各種指示和里程顯示多方面的功能。
[0005]但是,目前的全液晶汽車儀表內(nèi)部原理復(fù)雜,設(shè)計難度高,對硬件的要求相應(yīng)的也較高,因此成本高的全液晶儀表主要用于高檔車型。目前急需一種基于簡單、便捷、高效的顯示畫面管理方案的低成本全液晶儀表系統(tǒng)的設(shè)計方法。

【發(fā)明內(nèi)容】

[0006]為了解決目前全由于液晶汽車儀表內(nèi)部原理復(fù)雜、設(shè)計難度高、對硬件要求高而造成的全液晶汽車儀表設(shè)計成本高的問題,進(jìn)而提供了一種基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法。
[0007]基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法,該方法通過以下步驟實現(xiàn),
[0008]步驟一、建立ACTOR結(jié)構(gòu)體;
[0009]ACTOR結(jié)構(gòu)體的數(shù)據(jù)域由以下各項組成:
[0010][TypeFlag],表示該對象是圖形元素或者容器,圖形元素對應(yīng)直接在屏幕上顯示的組件,容器用于盛放其他子圖形元素和子容器;
[0011][next],存儲指向下一個ACTOR結(jié)構(gòu)體的指針;[0012][ShowFlag],表示圖形元素最終是否顯示在屏幕上;
[0013][VertexCoord],表示圖形元素的頂點坐標(biāo);
[0014][TextureCoord],表示圖形元素綁定紋理的紋理坐標(biāo);
[0015][Texturelndex],表示圖形元素綁定紋理在全部紋理數(shù)組中的索引值;
[0016][ChildTextureTotal],表示圖形元素綁定的紋理中子紋理的總數(shù);
[0017][ChildTextureIndex],表示圖形元素綁定紋理中子紋理的索引值;
[0018][PTextureImage],表示指向紋理數(shù)據(jù)區(qū)的指針;
[0019][Layer],表示圖形元素在屏幕上顯示的圖層號;
[0020][CoordTransMatrix],表不坐標(biāo)變換的矩陣;
[0021][LinkTable],當(dāng)ACTOR結(jié)構(gòu)體中的[TypeFlag] —項表示對象為容器時,表示指向C0NTAINER_LINK結(jié)構(gòu)的指針,用于實現(xiàn)ACTOR的樹形結(jié)構(gòu);
[0022]步驟二、建立HMELINE結(jié)構(gòu)體;
[0023]TIMELINE結(jié)構(gòu)體的數(shù)據(jù)域由以下各項組成:
[0024][TimerTick],表示該動畫刷新一巾貞需要的時鐘滴答數(shù);
[0025][TimerFrameCount],表示該動畫已經(jīng)顯示了的巾貞數(shù);
[0026][FrameNumber],表示動畫時間軸中的巾貞總數(shù);
[0027][RepeatFlag],表示該動畫是單發(fā)的或者循環(huán)的;
[0028][TransforArgs],表示一個完整動畫需要的全部參數(shù);
[0029][ActorAddr],中存放指向圖像元素或者容器的指針,表示動畫的動作對象;
[0030][timer_handler],是一個函數(shù)指針,指向動畫的動作函數(shù);
[0031][next],存儲指向下一個HMELINE結(jié)構(gòu)體的指針;
[0032][last],存儲指向上一個HMELINE結(jié)構(gòu)體的指針;
[0033]步驟三、建立C0NTAINER_LINK結(jié)構(gòu)體;
[0034]C0NTAINER_LINK結(jié)構(gòu)體的數(shù)據(jù)域由以下各項組成:
[0035][ActorAddr],指向一個圖形元素或者一個容器;
[0036][next],存儲指向下一個C0NTAINER_LINK結(jié)構(gòu)體的指針;
[0037]步驟四、建立實現(xiàn)對ACTOR結(jié)構(gòu)進(jìn)行操作的關(guān)鍵函數(shù),該函數(shù)用于:初始化ACTOR鏈表;設(shè)置ACTOR結(jié)構(gòu)中的各項參數(shù);建立新的ACTOR節(jié)點并將其加入鏈表;將圖形元素類型的ACTOR節(jié)點或容器類型的ACTOR節(jié)點通過[LinkTable]連接到容器類型的ACTOR節(jié)點上;
[0038]步驟五、建立實現(xiàn)對TMELINE結(jié)構(gòu)進(jìn)行操作的關(guān)鍵函數(shù),該函數(shù)用于:初始化TIMELINE鏈表;設(shè)置HMELINE結(jié)構(gòu)中的各項參數(shù);建立新的TMELINE節(jié)點并將其加入鏈表;將單發(fā)動畫的TMELINE節(jié)點從鏈表中刪除;
[0039]步驟六、建立實現(xiàn)操縱ACTOR變換的動作函數(shù)集;該函數(shù)集中函數(shù)用于:
[0040]遞歸搜索ACTOR容器中子圖形元素或子容器中的子圖形元素并加以變換;用于實現(xiàn)圖像動作;
[0041]步驟七、建立實現(xiàn)ACTOR結(jié)構(gòu)和HMELINE結(jié)構(gòu)以及動作函數(shù)相關(guān)聯(lián)的函數(shù);
[0042]該函數(shù)用于:將TIMELINE結(jié)構(gòu)中的[ActorAddr]指向動作的一個ACTOR節(jié)點,并將TIMELINE結(jié)構(gòu)中的[timer_handler]指向?qū)崿F(xiàn)動作的函數(shù);[0043]步驟八、建立實現(xiàn)查找已經(jīng)就緒的時間軸動作并將其執(zhí)行的函數(shù);
[0044]該函數(shù)用于,遍歷HMELINE鏈表,比對當(dāng)前時鐘滴答與HMELINE數(shù)據(jù)域[TimerTick],匹配成功則執(zhí)行TIMELINE數(shù)據(jù)域[timer_handler]指向的動作函數(shù);匹配不成功則分析下一個HMELINE節(jié)點;當(dāng)HMELINE節(jié)點中的全部幀刷新完畢后,若該時間軸是循環(huán)的,則開始一個新的周期;若該時間軸是單發(fā)的,則把該HMELINE節(jié)點從HMELINE鏈表中刪除;
[0045]步驟九、建立實現(xiàn)屏幕刷新的函數(shù);
[0046]該函數(shù)用于,遍歷ACTOR鏈表,將每個標(biāo)記為“可以顯示”的圖形元素依次畫在屏幕上,并按照各個圖層的層級關(guān)系相互覆蓋;
[0047]步驟十、建立定時機(jī)制;采用定時器作為整個框架的始終心跳,在每個始終滴答內(nèi),執(zhí)行步驟八內(nèi)提到的查找已經(jīng)就緒的時間軸動作并將其執(zhí)行的函數(shù)以及步驟九內(nèi)提到的屏幕刷新的函數(shù)。
[0048]本發(fā)明的有益效果是:本發(fā)明提供了圖形顯示、時間軸動畫組織以及圖層管理等各種功能,本發(fā)明的優(yōu)點有:
[0049]1、本發(fā)明所設(shè)計的框架系統(tǒng)減少在此框架之上的設(shè)計成本和代碼量,便于代碼的維護(hù)和版本升級。
[0050]2、本發(fā)明描述的圖形框架系統(tǒng)只提供實現(xiàn)繪圖、動作的機(jī)制,而不在此之上附加任何策略,使得內(nèi)部原理簡單、設(shè)計容易,開發(fā)人員可以靈活的在框架的基礎(chǔ)上實現(xiàn)各種預(yù)期效果,并可以在本框架系統(tǒng)基礎(chǔ)上設(shè)計應(yīng)用于汽車儀表各顯示組件的實現(xiàn)方法。
[0051]3、本發(fā)明描述的圖形框架系統(tǒng)底層只依賴于OpenGL ES圖形庫,而該圖形庫已經(jīng)被移植到各個操作系統(tǒng)中,因此本框架系統(tǒng)可以在作出微小的修改后在不同的操作系統(tǒng)間移植,提高了本框架系統(tǒng)的可復(fù)用性和可移植性,同比提高了 10%。
[0052]4,OpenGL ES在實現(xiàn)上充分利用了硬件加速,運行效率高,同比提高了 15%,因此本發(fā)明描述的圖形框架系統(tǒng)可以高效的運行在嵌入式平臺上,對硬件的要求較低,節(jié)約了硬件成本,同比降低了 10%,符合全液晶汽車儀表的要求。
[0053]本發(fā)明所述的圖形框架系統(tǒng)的設(shè)計方法獲得的圖形框架系統(tǒng)的結(jié)構(gòu)組織合理,API明確易用。
【專利附圖】

【附圖說明】
[0054]圖1為基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法各個結(jié)構(gòu)體的鏈接關(guān)系;
[0055]圖2為ACTOR結(jié)構(gòu)的數(shù)據(jù)域以及組織方式;
[0056]圖3為HMELINE結(jié)構(gòu)的數(shù)據(jù)域以及組織方式;
[0057]圖4為CONTAINER_LINK結(jié)構(gòu)的數(shù)據(jù)域;
[0058]圖5為基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法的應(yīng)用流程圖;
[0059]圖6為圖5中定時器的工作流程圖。
【具體實施方式】
[0060]【具體實施方式】一:下面結(jié)合圖1至圖4說明本實施方式,本實施方式所述的基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法,該方法通過以下步驟實現(xiàn),
[0061]步驟一、建立ACTOR結(jié)構(gòu)體;
[0062]ACTOR結(jié)構(gòu)體的數(shù)據(jù)域由以下各項組成:
[0063][TypeFlag],表示該對象是圖形元素或者容器,圖形元素對應(yīng)直接在屏幕上顯示的組件,容器用于盛放其他子圖形元素和子容器;
[0064][next],存儲指向下一個ACTOR結(jié)構(gòu)體的指針;
[0065][ShowFlag],表示圖形元素最終是否顯示在屏幕上;
[0066][VertexCoord],表示圖形元素的頂點坐標(biāo);
[0067][TextureCoord],表示圖形元素綁定紋理的紋理坐標(biāo);
[0068][Texturelndex],表示圖形元素綁定紋理在全部紋理數(shù)組中的索引值;
[0069][ChildTextureTotal],表示圖形元素綁定的紋理中子紋理的總數(shù);
[0070][ChildTextureIndex],表示圖形元素綁定紋理中子紋理的索引值;
[0071][PTextureImage],表示指向紋理數(shù)據(jù)區(qū)的指針;
[0072][Layer],表示圖形元素在屏幕上顯示的圖層號;
[0073][CoordTransMatrix],表不坐標(biāo)變換的矩陣;
[0074][LinkTable],當(dāng)ACTOR結(jié)構(gòu)體中的[TypeFlag] —項表示對象為容器時,表示指向C0NTAINER_LINK結(jié)構(gòu)的指針,用于實現(xiàn)ACTOR的樹形結(jié)構(gòu);
[0075]步驟二、建立HMELINE結(jié)構(gòu)體;
[0076]TIMELINE結(jié)構(gòu)體的數(shù)據(jù)域由以下各項組成:
[0077][TimerTick],表示該動畫刷新一巾貞需要的時鐘滴答數(shù);
[0078][TimerFrameCount],表示該動畫已經(jīng)顯示了的巾貞數(shù);
[0079][FrameNumber],表示動畫時間軸中的巾貞總數(shù);
[0080][RepeatFlag],表示該動畫是單發(fā)的或者循環(huán)的;
[0081][TransforArgs],表示一個完整動畫需要的全部參數(shù);
[0082][ActorAddr],中存放指向圖像元素或者容器的指針,表示動畫的動作對象;
[0083][timer_handler],是一個函數(shù)指針,指向動畫的動作函數(shù);
[0084][next],存儲指向下一個TIMELINE結(jié)構(gòu)體的指針;
[0085][last],存儲指向上一個HMELINE結(jié)構(gòu)體的指針;
[0086]步驟三、建立C0NTAINER_LINK結(jié)構(gòu)體;
[0087]C0NTAINER_LINK結(jié)構(gòu)體的數(shù)據(jù)域由以下各項組成:
[0088][ActorAddr],指向一個圖形元素或者一個容器;
[0089][next],存儲指向下一個C0NTAINER_LINK結(jié)構(gòu)體的指針;
[0090]步驟四、建立實現(xiàn)對ACTOR結(jié)構(gòu)進(jìn)行操作的關(guān)鍵函數(shù),該函數(shù)用于:初始化ACTOR鏈表;設(shè)置ACTOR結(jié)構(gòu)中的各項參數(shù);建立新的ACTOR節(jié)點并將其加入鏈表;將圖形元素類型的ACTOR節(jié)點或容器類型的ACTOR節(jié)點通過[LinkTable]連接到容器類型的ACTOR節(jié)點上;
[0091]步驟五、建立實現(xiàn)對TMELINE結(jié)構(gòu)進(jìn)行操作的關(guān)鍵函數(shù),該函數(shù)用于:初始化TIMELINE鏈表;設(shè)置HMELINE結(jié)構(gòu)中的各項參數(shù);建立新的HMELINE節(jié)點并將其加入鏈表;將單發(fā)動畫的TMELINE節(jié)點從鏈表中刪除;[0092]步驟六、建立實現(xiàn)操縱ACTOR變換的動作函數(shù)集;該函數(shù)集中函數(shù)用于:
[0093]遞歸搜索ACTOR容器中子圖形元素或子容器中的子圖形元素并加以變換;用于實現(xiàn)圖像動作;
[0094]步驟七、建立實現(xiàn)ACTOR結(jié)構(gòu)和HMELINE結(jié)構(gòu)以及動作函數(shù)相關(guān)聯(lián)的函數(shù);
[0095]該函數(shù)用于:將TIMELINE結(jié)構(gòu)中的[ActorAddr]指向動作的一個ACTOR節(jié)點,并將TIMELINE結(jié)構(gòu)中的[timer_handler]指向?qū)崿F(xiàn)動作的函數(shù);
[0096]步驟八、建立實現(xiàn)查找已經(jīng)就緒的時間軸動作并將其執(zhí)行的函數(shù);
[0097]該函數(shù)用于,遍歷HMELINE鏈表,比對當(dāng)前時鐘滴答與HMELINE數(shù)據(jù)域[TimerTick],匹配成功則執(zhí)行TIMELINE數(shù)據(jù)域[timer_handler]指向的動作函數(shù);匹配不成功則分析下一個HMELINE節(jié)點;當(dāng)HMELINE節(jié)點中的全部幀刷新完畢后,若該時間軸是循環(huán)的,則開始一個新的周期;若該時間軸是單發(fā)的,則把該HMELINE節(jié)點從HMELINE鏈表中刪除;
[0098]步驟九、建立實現(xiàn)屏幕刷新的函數(shù);
[0099]該函數(shù)用于,遍歷ACTOR鏈表,將每個標(biāo)記為“可以顯示”的圖形元素依次畫在屏幕上,并按照各個圖層的層級關(guān)系相互覆蓋;
[0100]步驟十、建立定時機(jī)制;采用定時器作為整個框架的始終心跳,在每個始終滴答內(nèi),執(zhí)行步驟八內(nèi)提到的查找已經(jīng)就緒的時間軸動作并將其執(zhí)行的函數(shù)以及步驟九內(nèi)提到的屏幕刷新的函數(shù)。
[0101]本實施方式中,定時器的具體實現(xiàn)依賴于操作系統(tǒng)已經(jīng)系統(tǒng)中提供的定時庫函數(shù);
[0102]容器類型ACTOR通過[LinkTable]指針盛載其他的圖形元素類型的ACTOR ;因此只有當(dāng)ACTOR結(jié)構(gòu)體中的[TypeFlag] —項為容器時,該結(jié)構(gòu)體中的[LinkTable]指針的的指向才有意義。
[0103]【具體實施方式】二:下面結(jié)合圖2說明本實施方式,本實施方式對【具體實施方式】一所述的基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法作進(jìn)一步限定,本實施方式中,步驟四中所述的建立新的ACTOR節(jié)點并將其加入鏈表中的過程為:為新建立的ACTOR節(jié)點設(shè)置頂點坐標(biāo)、紋理索引、紋理坐標(biāo)、圖層等信息,并將該節(jié)點類型設(shè)置為圖形元素、將顯示標(biāo)志標(biāo)記為“可以顯示”;當(dāng)主循環(huán)以及定時器開始運行后,將在屏幕相應(yīng)的位置顯示對應(yīng)的圖片。
[0104]【具體實施方式】三:下面結(jié)合圖2、圖5和圖6說明本實施方式,本實施方式對【具體實施方式】一所述的基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法作進(jìn)一步限定,本實施方式中,步驟四中所述的將圖形元素類型的ACTOR節(jié)點或容器類型的ACTOR節(jié)點通過[LinkTable]連接到容器類型的ACTOR節(jié)點上的過程為:
[0105]ACTOR鏈表中包含若干圖形元素類型的ACTOR節(jié)點和一個容器類型的ACTOR節(jié)點,該容器類型的ACTOR節(jié)點通過[LinkTable]指針連接到其他所有圖形元素類型的ACTOR節(jié)
占.[0106]添加一個HMELINE節(jié)點,并將該時間軸動畫的應(yīng)用對象設(shè)置為上面提到的ACTOR容器節(jié)點;當(dāng)主循環(huán)以及定時器開始運行后,將在屏幕相應(yīng)的位置顯示具有循環(huán)動作效果的對應(yīng)圖片組,該組包含了所有添加進(jìn)容器內(nèi)的圖形元素。[0107]【具體實施方式】四:下面結(jié)合圖3說明本實施方式,本實施方式對【具體實施方式】一所述的基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法作進(jìn)一步限定,本實施方式中,步驟五中所述的建立新的HMELINE節(jié)點并將其加入鏈表的方法為:為新的HMELINE節(jié)點設(shè)置始終滴答、時間軸幀總數(shù)等信息,鏈接一種動畫動作并為其設(shè)定相應(yīng)的動畫參數(shù),將重復(fù)標(biāo)志設(shè)置為循環(huán)運行,之后將該時間軸的動作對象設(shè)定為步驟一中建立的圖形元素;當(dāng)主循環(huán)以及定時器開始運行后,將在屏幕相應(yīng)的位置顯示具有循環(huán)動作效果的對應(yīng)圖片。
[0108]在本實施方式中,所建立的時間軸節(jié)點的基礎(chǔ)上,在時間軸鏈表中添加新的TIMELINE節(jié)點,設(shè)置HMELINE節(jié)點的各個數(shù)據(jù)域,在為其鏈接動作及動作對象時,將動作函數(shù)鏈接到自己設(shè)計的新的動作函數(shù)上,該函數(shù)不在框架提供的動作函數(shù)集內(nèi),并將動作對象設(shè)定為ACTOR容器內(nèi)的某一個圖形元素。當(dāng)主循環(huán)以及定時器開始運行后,ACTOR容器內(nèi)的所有圖形元素將有一個共同的動作;另外,ACTOR容器內(nèi)的某個圖形元素在共同動作的基礎(chǔ)上有一個新的動作方式,該動作由自己設(shè)定的動作函數(shù)所決定;各個圖形元素在屏幕上呈現(xiàn)的覆蓋規(guī)則由他們相應(yīng)的圖層數(shù)據(jù)域大小決定。
[0109]主函數(shù)中應(yīng)順次包含以下方面的內(nèi)容:硬件顯示環(huán)境初始化、載入所需紋理圖片、ACTOR鏈表初始化、建立所有ACTOR圖形元素和容器并設(shè)定相應(yīng)的包含關(guān)系、HMELINE鏈表初始化、建立所有的TMELINE時間軸節(jié)點并指定動作對象和動作函數(shù)、開啟定時機(jī)制、進(jìn)入主循環(huán),其中動作函數(shù)不限于圖像框架函數(shù)集中的函數(shù)。
[0110]在每個始終滴答內(nèi),應(yīng)順次執(zhí)行以下方面的內(nèi)容:通過遍歷TMELINE鏈表搜索并處理所有應(yīng)當(dāng)運行的動作函數(shù)、繪制ACTOR鏈表中所有標(biāo)記為可以顯示的圖形元素節(jié)點并
刷新屏幕。
[0111]【具體實施方式】五:本實施方式對【具體實施方式】一所述的基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法作進(jìn)一步限定,本實施方式中,步驟六中所述的圖像動作包括:圖像平移、圖像旋轉(zhuǎn)、移動圖形元素某一邊界、移動圖形元素紋理。
[0112]【具體實施方式】六:本實施方式對【具體實施方式】一所述的基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法作進(jìn)一步限定,本實施方式中,步驟六中所述的圖像動作包括:勻速變化和一階慣性變化兩種動作方式。
[0113]【具體實施方式】七:本實施方式對【具體實施方式】一所述的基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法作進(jìn)一步限定,本實施方式中,步驟六中所述的圖像動作包括閃爍和淡入淡出兩種動作方式。
[0114]【具體實施方式】八:本實施方式對【具體實施方式】一所述的基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法作進(jìn)一步限定,本實施方式中,步驟十中所述的定時器的定位精度為毫秒級。
[0115]汽車顯示器終端上的圖形系統(tǒng)可通過OpenGl圖形庫實現(xiàn)。OpenGL是一個定義了一個跨編程語言、跨平臺的應(yīng)用程序接口(API)的規(guī)格,它用于生成二維、三維圖像。這個接口由近三百五十個不同的函數(shù)調(diào)用組成,用來從簡單的圖形比特繪制復(fù)雜的三維景象。
[0116]OpenGL ES (OpenGL for Embedded Systems)是 OpenGL 圖形 API 的子集,針對手機(jī)、PDA和游戲主機(jī)等嵌入式設(shè)備而設(shè)計。因此也可方便的移植到汽車電子控制平臺。依靠OpenGL ES圖形庫將使全液晶儀表的開發(fā)變得快捷而穩(wěn)定。
【權(quán)利要求】
1.基于OpenGL ES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法,其特征在于:該方法通過以下步驟實現(xiàn), 步驟一、建立ACTOR結(jié)構(gòu)體; ACTOR結(jié)構(gòu)體的數(shù)據(jù)域由以下各項組成: [TypeFlag],表示該對象是圖形元素或者容器,圖形元素對應(yīng)直接在屏幕上顯示的組件,容器用于盛放其他子圖形元素和子容器; [next],存儲指向下一個ACTOR結(jié)構(gòu)體的指針; [ShowFlag],表示圖形元素最終是否顯示在屏幕上; [VertexCoord],表示圖形元素的頂點坐標(biāo); [TextureCoord],表示圖形元素綁定紋理的紋理坐標(biāo); [Texturelndex],表示圖形元素綁定紋理在全部紋理數(shù)組中的索引值; [ChildTextureTotal],表示圖形元素綁定的紋理中子紋理的總數(shù); [ChildTextureIndex],表示圖形元素綁定紋理中子紋理的索引值; [PTextureImage],表示指向紋理數(shù)據(jù)區(qū)的指針; [Layer],表示圖形元素在屏幕上顯示的圖層號;
[CoordTransMatrix],表示坐標(biāo)變換的矩陣; [LinkTable],當(dāng)ACTOR結(jié)構(gòu)體中的[TypeFlag] —項表示對象為容器時,表示指向C0NTAINER_LINK結(jié)構(gòu)的指針,用于實現(xiàn)ACTOR的樹形結(jié)構(gòu); 步驟二、建立HMELINE結(jié)構(gòu)體; TIMELINE結(jié)構(gòu)體的數(shù)據(jù)域由以下各項組成: [TimerTick],表示該動畫刷新一幀需要的時鐘滴答數(shù); [TimerFrameCount],表示該動畫已經(jīng)顯示了的幀數(shù); [FrameNumber],表示動畫時間軸中的幀總數(shù); [RepeatFlag],表示該動畫是單發(fā)的或者循環(huán)的; [TransforArgs],表示一個完整動畫需要的全部參數(shù); [ActorAddr],中存放指向圖像元素或者容器的指針,表示動畫的動作對象; [timer_handler],是一個函數(shù)指針,指向動畫的動作函數(shù); [next],存儲指向下一個HMELINE結(jié)構(gòu)體的指針; [last],存儲指向上一個HMELINE結(jié)構(gòu)體的指針; 步驟三、建立CONTAINER_LINK結(jié)構(gòu)體; CONTAINER_LINK結(jié)構(gòu)體的數(shù)據(jù)域由以下各項組成: [ActorAddr],指向一個圖形元素或者一個容器; [next],存儲指向下一個CONTAINER_LINK結(jié)構(gòu)體的指針; 步驟四、建立實現(xiàn)對ACTOR結(jié)構(gòu)進(jìn)行操作的關(guān)鍵函數(shù),該函數(shù)用于:初始化ACTOR鏈表;設(shè)置ACTOR結(jié)構(gòu)中的各項參數(shù);建立新的ACTOR節(jié)點并將其加入鏈表;將圖形元素類型的ACTOR節(jié)點或容器類型的ACTOR節(jié)點通過[LinkTable]連接到容器類型的ACTOR節(jié)點上;步驟五、建立實現(xiàn)對TMELINE結(jié)構(gòu)進(jìn)行操作的關(guān)鍵函數(shù),該函數(shù)用于:初始化TIMELINE鏈表;設(shè)置HMELINE結(jié)構(gòu)中的各項參數(shù);建立新的TMELINE節(jié)點并將其加入鏈表;將單發(fā)動畫的TMELINE節(jié)點從鏈表中刪除;步驟六、建立實現(xiàn)操縱ACTOR變換的動作函數(shù)集;該函數(shù)集中函數(shù)用于: 遞歸搜索ACTOR容器中子圖形元素或子容器中的子圖形元素并加以變換;用于實現(xiàn)圖像動作; 步驟七、建立實現(xiàn)ACTOR結(jié)構(gòu)和HMELINE結(jié)構(gòu)以及動作函數(shù)相關(guān)聯(lián)的函數(shù); 該函數(shù)用于:將HMELINE結(jié)構(gòu)中的[ActorAddr]指向動作的一個ACTOR節(jié)點,并將TIMELINE結(jié)構(gòu)中的[timer_handler]指向?qū)崿F(xiàn)動作的函數(shù); 步驟八、建立實現(xiàn)查找已經(jīng)就緒的時間軸動作并將其執(zhí)行的函數(shù); 該函數(shù)用于,遍歷TMELINE鏈表,比對當(dāng)前時鐘滴答與HMELINE數(shù)據(jù)域[TimerTick],匹配成功則執(zhí)行TIMELINE數(shù)據(jù)域[timer_handler]指向的動作函數(shù);匹配不成功則分析下一個HMELINE節(jié)點;當(dāng)HMELINE節(jié)點中的全部幀刷新完畢后,若該時間軸是循環(huán)的,則開始一個新的周期;若該時間軸是單發(fā)的,則把該HMELINE節(jié)點從HMELINE鏈表中刪除;步驟九、建立實現(xiàn)屏幕刷新的函數(shù); 該函數(shù)用于,遍歷ACTOR鏈表,將每個標(biāo)記為“可以顯示”的圖形元素依次畫在屏幕上,并按照各個圖層的層級關(guān)系相互覆蓋; 步驟十、建立定時機(jī)制;采用定時器作為整個框架的始終心跳,在每個始終滴答內(nèi),執(zhí)行步驟八內(nèi)提到的查找已經(jīng)就緒的時間軸動作并將其執(zhí)行的函數(shù)以及步驟九內(nèi)提到的屏幕刷新的函數(shù)。
2.根據(jù)權(quán)利要求1所述的基于OpenGLES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法,其特征在于:步驟四中所述的建立新的ACTOR節(jié)點并將其加入鏈表中的過程為:為新建立的ACTOR節(jié)點設(shè)置頂點坐標(biāo)、紋理索引、紋理坐標(biāo)、圖層等信息,并將該節(jié)點類型設(shè)置為圖形元素、將顯示標(biāo)志標(biāo)記為“可以顯示”;當(dāng)主循環(huán)以及定時器開始運行后,將在屏幕相應(yīng)的位置顯示對應(yīng)的圖片。
3.根據(jù)權(quán)利要求1所述的基于OpenGLES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法,其特征在于:步驟四中所述的將圖形元素類型的ACTOR節(jié)點或容器類型的ACTOR節(jié)點通過[LinkTable]連接到容器類型的ACTOR節(jié)點上的過程為:ACTOR鏈表中包含若干圖形元素類型的ACTOR節(jié)點和一個容器類型的ACTOR節(jié)點,該容器類型的ACTOR節(jié)點通過[LinkTable]指針連接到其他所有圖形元素類型的ACTOR節(jié)點;添加一個HMELINE節(jié)點,并將該時間軸動畫的應(yīng)用對象設(shè)置為上面提到的ACTOR容器節(jié)點;當(dāng)主循環(huán)以及定時器開始運行后,將在屏幕相應(yīng)的位置顯示具有循環(huán)動作效果的對應(yīng)圖片組,該組包含了所有添加進(jìn)容器內(nèi)的圖形元素。
4.根據(jù)權(quán)利要求1所述的基于OpenGLES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法,其特征在于:步驟五中所述的建立新的TMELINE節(jié)點并將其加入鏈表的方法為:為新的HMELINE節(jié)點設(shè)置始終滴答、時間軸幀總數(shù)等信息,鏈接一種動畫動作并為其設(shè)定相應(yīng)的動畫參數(shù),將重復(fù)標(biāo)志設(shè)置為循環(huán)運行,之后將該時間軸的動作對象設(shè)定為步驟一中建立的圖形元素;當(dāng)主循環(huán)以及定時器開始運行后,將在屏幕相應(yīng)的位置顯示具有循環(huán)動作效果的對應(yīng)圖片。
5.根據(jù)權(quán)利要求1所述的基于OpenGLES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法,其特征在于,步驟六中所述的圖像動作包括:圖像平移、圖像旋轉(zhuǎn)、移動圖形元素某一邊界、移動圖形元素紋理。
6.根據(jù)權(quán)利要求1所述的基于OpenGLES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法,其特征在于,步驟六中所述的圖像動作包括:勻速變化和一階慣性變化兩種動作方式。
7.根據(jù)權(quán)利要求1所述的基于OpenGLES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法,其特征在于,步驟六中所述的圖像動作包括閃爍和淡入淡出兩種動作方式。
8.根據(jù)權(quán)利要求1所述的基于OpenGLES的全液晶汽車儀表圖形框架系統(tǒng)設(shè)計方法,其特征在于,步驟十中所述的定時器的定位精度為毫秒級。
【文檔編號】G06F17/50GK103745074SQ201410043702
【公開日】2014年4月23日 申請日期:2014年1月29日 優(yōu)先權(quán)日:2014年1月29日
【發(fā)明者】裴一飛, 于金泳, 高會軍, 劉化偉 申請人:哈爾濱工業(yè)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1