專(zhuān)利名稱(chēng):嵌入式gpu實(shí)現(xiàn)3d-gis的快速渲染系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于嵌入式技術(shù)領(lǐng)域,具體涉及到采用嵌入式GPU終端實(shí)現(xiàn)3D-GIS地圖的快速渲染系統(tǒng)。
背景技術(shù):
目前,嵌入式圖形都是二維圖形的應(yīng)用,最常見(jiàn)的應(yīng)用實(shí)例有俄羅斯方塊、貪吃蛇等小游戲。此外,有些嵌入式設(shè)備上還支持?jǐn)z像保存、發(fā)送以及接收操作,這些都是基于圖片的編解碼及圖形顯示的原理,雖然這些應(yīng)用比起貪吃蛇這類(lèi)應(yīng)用要求更加復(fù)雜,但是只要仔細(xì)分析就會(huì)發(fā)現(xiàn),所有的這些圖形應(yīng)用還是局限于二維平面上。隨著集成電路工藝的發(fā)展,一些單芯片設(shè)計(jì)已經(jīng)開(kāi)始具備了類(lèi)似處理3D圖形計(jì)算的能力。3D圖形的硬件加速已經(jīng)不再局限于個(gè)人電腦和工作站,同樣能在嵌入式系統(tǒng)上實(shí)現(xiàn)。在3D圖形領(lǐng)域中,對(duì)于個(gè)人電腦而言,3D圖形硬件加速這一技術(shù)已經(jīng)趨于成熟。但是對(duì)于消費(fèi)類(lèi)電子行業(yè),如何構(gòu)建一個(gè)低成本,低功耗,高質(zhì)量顯示的嵌入式3D圖形處理芯片還是一個(gè)新的挑戰(zhàn)。嵌入式硬件平臺(tái)一般都是因?yàn)橐恍┨厥獾男枰a(chǎn)生的具有比較單一目的而開(kāi)發(fā)的,它有成本低、性能穩(wěn)定、硬件資源少、功耗低等特點(diǎn)。也正是由于這樣一些原因,在這樣的平臺(tái)上進(jìn)行三維開(kāi)發(fā)必然帶來(lái)成本上升,而且三維計(jì)算量大也會(huì)導(dǎo)致系統(tǒng)資源捉襟見(jiàn)肘。導(dǎo)致嵌入式平臺(tái)上三維圖形學(xué)應(yīng)用和計(jì)算機(jī)上的應(yīng)用相差甚遠(yuǎn)的原因,并不是嵌入式平臺(tái)上沒(méi)有進(jìn)行三維應(yīng)用的必要,而是嵌入式系統(tǒng)平臺(tái)硬件資源有限,在一個(gè)不具備圖形硬件的平臺(tái)上幾乎不可能完成比較復(fù)雜的三維模型的建模及顯示。以最為普遍使用的移動(dòng)設(shè)備手機(jī)為例,傳統(tǒng)的游戲和視頻都是通過(guò)CPU來(lái)進(jìn)行算術(shù)運(yùn)算,這大大消耗了 CPU的資源,導(dǎo)致嵌入式多媒體的發(fā)展遭遇瓶頸;而且,嵌入式技術(shù)注重低功耗技術(shù),電池壽命往往嚴(yán)重影響到嵌入式設(shè)備的性能,大量的三維模型運(yùn)算和帶寬消耗必將導(dǎo)致電池壽命的縮短。隨著SOC技術(shù)的不斷發(fā)展,使得芯片的集成度越來(lái)越高,可編程圖形硬件技術(shù)也在不斷的發(fā)展進(jìn)步,體積和價(jià)格都有了大幅下降。由于消費(fèi)類(lèi)嵌入式電子設(shè)備有向集成度更高,多媒體功能更加豐富、數(shù)據(jù)處理能力更強(qiáng)的方向發(fā)展的趨勢(shì)。目前,一些嵌入式多媒體芯片推向市場(chǎng),不僅在聲音處理、圖片保存及顯示等功能上有了很大的突破和發(fā)展,目前已經(jīng)向3D加速的功能上迅速發(fā)展??删幊虉D形硬件技術(shù)不斷進(jìn)步,使得利用硬件實(shí)時(shí)繪制三維圖形成為可能。這極大地推動(dòng)了嵌入式三維圖像處理的開(kāi)發(fā)。
發(fā)明內(nèi)容
本發(fā)明提出一種針對(duì)嵌入式終端開(kāi)發(fā)的3D-GIS電子地圖系統(tǒng),該系統(tǒng)可以實(shí)現(xiàn)用戶終端和服務(wù)器的實(shí)時(shí)交互,并在用戶終端上利用嵌入式GPU進(jìn)行實(shí)時(shí)3D渲染。整個(gè)系統(tǒng)包括服務(wù)器、客戶端和GIS數(shù)據(jù)庫(kù)三個(gè)部分。
服務(wù)器用于制作模型、控制數(shù)據(jù)流、數(shù)據(jù)獲取、數(shù)據(jù)傳送。GIS數(shù)據(jù)庫(kù)可進(jìn)一步細(xì)分為兩類(lèi)2D-GIS數(shù)據(jù)庫(kù)和3D-GIS數(shù)據(jù)庫(kù)。服務(wù)器的數(shù)據(jù)傳送主要是指根據(jù)客戶終端的請(qǐng)求從GIS數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)并通過(guò)網(wǎng)絡(luò)傳送給客戶終端,客戶終端是使用嵌入式GPU的嵌入式設(shè)備,嵌入式GPU主要負(fù)責(zé)將服務(wù)器傳送過(guò)來(lái)的GIS數(shù)據(jù)進(jìn)行渲染并顯示在屏幕上。客戶終端的系統(tǒng)框架由硬件層、驅(qū)動(dòng)層、系統(tǒng)平臺(tái)和應(yīng)用層組成。所述客戶端的系統(tǒng)框架硬件層,由嵌入式終端和3D-GIS功能關(guān)聯(lián)的硬件組成,主要包括主處理器CPU、嵌入式GPU、輸入設(shè)備(鍵盤(pán)以及鼠標(biāo))、顯示屏、內(nèi)存等等。所述客戶端的系統(tǒng)框架驅(qū)動(dòng)層,表示該層是直接和硬件交互的軟件驅(qū)動(dòng)層,由串口驅(qū)動(dòng)、SDUEGLJPOpenGL ES組成。其中,串口驅(qū)動(dòng)直接提供GPS數(shù)據(jù)的解析和接收。SDL 函數(shù)提供對(duì)鍵盤(pán)、鼠標(biāo)和觸摸屏的支持,能夠?yàn)榍度胧紾IS的導(dǎo)航提供人機(jī)交互,對(duì)3D地圖進(jìn)行旋轉(zhuǎn)和縮放。EGL提供的是對(duì)本地視窗系統(tǒng)的支持,有了 EGL的支持,可以在嵌入式設(shè)備上實(shí)現(xiàn)無(wú)窗口管理系統(tǒng),節(jié)省了很大部分的嵌入式資源。OpenGL ES為3D地圖繪制和大規(guī)模的場(chǎng)景渲染提供了 API,結(jié)合PowerVR SGX的API函數(shù)接口,進(jìn)行3D-GIS地圖的快速渲染。所述客戶端的系統(tǒng)平臺(tái),一般采用嵌入式Linux,嵌入式Linux是以Linux為基礎(chǔ)的嵌入式作業(yè)系統(tǒng),它被廣泛應(yīng)用在移動(dòng)電話、個(gè)人數(shù)字助理(PDA)、媒體播放器等消費(fèi)類(lèi)電子廣品。所述客戶端的應(yīng)用層,是客戶端系統(tǒng)的最上面的一層,通過(guò)調(diào)用系統(tǒng)API、視窗管理API (EGL)、PowerVR Shell API、OpenGL ES API實(shí)現(xiàn)3D場(chǎng)景的繪制和大規(guī)模地圖的渲染。本發(fā)明提出了一種針對(duì)嵌入式GPU實(shí)現(xiàn)3D的大規(guī)模場(chǎng)景繪制和渲染的系統(tǒng),其主要流程包括模型制作、數(shù)據(jù)操作、CPU和嵌入式GPU初始化、場(chǎng)景渲染、3D場(chǎng)景顯示和資源回收等環(huán)節(jié)。(I)模型制作在服務(wù)器上運(yùn)行三維建模軟件,例如3DMax Maya等軟件,完成三維地圖建模和場(chǎng)景設(shè)置,得到帶渲染的數(shù)據(jù)文件,并將這些3D數(shù)據(jù)存放于3D-GIS數(shù)據(jù)庫(kù)中。(2)數(shù)據(jù)操作服務(wù)器根據(jù)客戶終端發(fā)來(lái)的請(qǐng)求,確定所需要的2D和3D地圖數(shù)據(jù),并從GIS數(shù)據(jù)庫(kù)中獲取這些數(shù)據(jù),最后將這些數(shù)據(jù)傳送給客戶終端。所述的2D和3D地圖數(shù)據(jù),是根據(jù)客戶終端發(fā)送過(guò)來(lái)的請(qǐng)求確定的。用戶在進(jìn)行地圖選擇時(shí),通過(guò)鼠標(biāo)或者觸摸屏選擇所需要的地圖部分,該部分為用戶期望顯示于顯示屏中央的部分,如果該部分的3D數(shù)據(jù)在客戶端不存在,那么客戶終端想服務(wù)器發(fā)送請(qǐng)求獲取數(shù)據(jù)。服務(wù)器根據(jù)用戶所需要的位置,從3D-GIS數(shù)據(jù)庫(kù)獲取該部分的3D數(shù)據(jù),并從2D-GIS 數(shù)據(jù)庫(kù)獲取所需地圖位置周邊區(qū)域的2D數(shù)據(jù),并將這些2D、3D數(shù)據(jù)一起發(fā)送給客戶終端進(jìn)行顯示。(3)客戶終端CPU和GPU初始化CPU開(kāi)辟內(nèi)存空間,加載地圖數(shù)據(jù)到內(nèi)存中,SDL 初始化,提供觸摸屏、鼠標(biāo)、鍵盤(pán)響應(yīng)的支持;串口驅(qū)動(dòng)程序接收和解析GPS協(xié)議數(shù)據(jù);嵌入式GPU初始化,開(kāi)辟足夠的顯存存放多邊形數(shù)據(jù)。(4)場(chǎng)景渲染CPU將需要渲染的靜態(tài)幀渲染任務(wù)分解成若干渲染子任務(wù)(以塊為單位),通過(guò)總線發(fā)送到嵌入式GPU,嵌入式GPU并行渲染節(jié)點(diǎn),對(duì)渲染子任務(wù)并行處理,完成渲染工作,得到渲染后的靜態(tài)幀。(5) 3D場(chǎng)景顯示嵌入式GPU計(jì)算得到的數(shù)據(jù)傳送到屏幕顯示映射內(nèi)存空間并在觸摸顯示屏上進(jìn)行顯示。(6)資源回收程序結(jié)束后,CPU釋放開(kāi)辟的內(nèi)存空間,GPU釋放開(kāi)辟的顯存空間, 進(jìn)行資源回收。
四
圖I.系統(tǒng)組成結(jié)構(gòu)圖2.設(shè)備終端實(shí)現(xiàn)框架3. PowerVR SGX的硬件架構(gòu)圖4. OpenGL ES 2. O可編程管線處理流程圖5.典型的EGL系統(tǒng)布局6.客戶端的程序流程圖
五具體實(shí)施例方式以下結(jié)合附圖和具體的實(shí)施用例來(lái)對(duì)本發(fā)明進(jìn)一步額詳細(xì)說(shuō)明。需要指出的是, 本發(fā)明可以以許多不同的實(shí)施方式實(shí)現(xiàn),而并不局限于本文所述的實(shí)施方式。本發(fā)明提出一種針對(duì)嵌入式終端開(kāi)發(fā)的3D-GIS電子地圖系統(tǒng),該系統(tǒng)可以實(shí)現(xiàn)用戶終端和服務(wù)器的實(shí)時(shí)交互,并在用戶終端上利用嵌入式GPU進(jìn)行實(shí)時(shí)3D渲染。如圖I 所示,整個(gè)系統(tǒng)包括服務(wù)端和客戶端兩個(gè)部分。服務(wù)端由服務(wù)器和GIS數(shù)據(jù)庫(kù)組成。服務(wù)器用于制作模型、控制數(shù)據(jù)流、數(shù)據(jù)獲取、數(shù)據(jù)傳送。GIS數(shù)據(jù)庫(kù)由兩部分組成2D-GIS數(shù)據(jù)庫(kù)和3D-GIS數(shù)據(jù)庫(kù)。其中3D-GIS數(shù)據(jù)庫(kù)是由服務(wù)器通過(guò)使用3D模型軟件經(jīng)過(guò)模型制作生成的。服務(wù)器的數(shù)據(jù)傳送主要是指服務(wù)器根據(jù)客戶終端的請(qǐng)求從GIS數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)并通過(guò)網(wǎng)絡(luò)傳送給客戶終端,服務(wù)器所獲取和傳送的數(shù)據(jù)既有2D數(shù)據(jù)也有3D數(shù)據(jù)??蛻艚K端的平臺(tái)處理器包括嵌入式CPU和嵌入式GPU等主要組成部分,其中,CPU 主要負(fù)責(zé)硬件的管理、數(shù)據(jù)流的控制和網(wǎng)絡(luò)交互,嵌入式GPU主要負(fù)責(zé)將服務(wù)器傳送過(guò)來(lái)的GIS數(shù)據(jù)進(jìn)行渲染并顯示在屏幕上。下面基于AM3517平臺(tái)為例作詳細(xì)介紹,該平臺(tái)的微處理器(MPU)采用了 ARMCortex-AS,另外還使用了嵌入式GPU進(jìn)行圖形計(jì)算及顯示。該平臺(tái)具有很強(qiáng)的處理核心和三維圖形加速功能。它的嵌入式GPU圖形引擎為PowerVR SGX,該圖形引擎處理速度達(dá)每秒IOMpolygon,并支持OpenGL ES 2. O,可加速實(shí)現(xiàn)3D圖形用戶界面。3D-GIS快速渲染系統(tǒng)的客戶終端可以從結(jié)構(gòu)上分為硬件結(jié)構(gòu)和軟件設(shè)計(jì)。硬件結(jié)構(gòu)主要有ARM主處理器芯片、PowerVR嵌入式GPU、輸入設(shè)備(如鍵盤(pán)和鼠標(biāo)等)、輸出設(shè)備(IXD顯示屏)和存儲(chǔ)器。軟件方面涉及到嵌入式Linux操作系統(tǒng)、SDUOpenGL ES, EGL 等等。圖2是客戶終端設(shè)備整個(gè)系統(tǒng)的實(shí)現(xiàn)框架圖??蛻艚K端3D-GIS電子地圖框架由硬件層、驅(qū)動(dòng)層、系統(tǒng)平臺(tái)和應(yīng)用層組成(I)硬件層主要包括嵌入式終端和3D-GIS功能關(guān)聯(lián)的硬件。a)主處理器 ARM Cortex_A8 ;
b)鍵盤(pán)鼠標(biāo);c)嵌入式圖形顯不卡PowerVR SGX ;d) LCD觸摸顯示屏;e)內(nèi)存。(2)驅(qū)動(dòng)層該層是直接和硬件交互的軟件驅(qū)動(dòng)層,串口驅(qū)動(dòng)直接提供GPS數(shù)據(jù)的解析和接收,GPS數(shù)據(jù)用于用戶終端開(kāi)機(jī)或者重置時(shí)進(jìn)行當(dāng)前地理位置的確定,并從服務(wù)端獲取當(dāng)前位置地圖數(shù)據(jù)進(jìn)行默認(rèn)顯示。SDL函數(shù)提供了對(duì)鍵盤(pán)、鼠標(biāo)和觸摸屏的支持,以讓用戶選擇所需要的地理位置,為嵌入式GIS的導(dǎo)航提供人機(jī)交互,對(duì)3D地圖進(jìn)行旋轉(zhuǎn)和縮放。EGL提供了對(duì)本地視窗系統(tǒng)的支持,有了 EGL的支持,可以在嵌入式設(shè)備上實(shí)現(xiàn)無(wú)窗口管理系統(tǒng),節(jié)省了很大部分的嵌入式資源。OpenGL ES為3D地圖繪制和大規(guī)模的場(chǎng)景渲染提供了 API,結(jié)合PowerVR SGX的API函數(shù)接口,進(jìn)行3D-GIS地圖的渲染。(3)系統(tǒng)平臺(tái)系統(tǒng)平臺(tái)采用了嵌入式Linux,嵌入式Linux是以Linux為基礎(chǔ)的嵌入式作業(yè)系統(tǒng),它被廣泛應(yīng)用在移動(dòng)電話、個(gè)人數(shù)字助理(PDA)、媒體播放器、消費(fèi)類(lèi)電子
女口
廣叩ο(4)應(yīng)用層這是最上面的一層,通過(guò)系統(tǒng)API、視窗管理API (EGL)、PowerVR Shell API、OpenGL ES API提供了 3D場(chǎng)景的繪制和大規(guī)模地圖的渲染。其中PowerVR SGX 有三個(gè)顯著的優(yōu)點(diǎn),首先是 TBDR(Tile_Based Deferred Rendering)省電架構(gòu),可在片上內(nèi)存中處理隱藏面消除(Hidden Surface Removal)和混合(Blending),通過(guò)減少內(nèi)存數(shù)據(jù)帶寬而達(dá)成省電效果;其次是可編程的通用可伸縮說(shuō)色引擎(Universal Scalable Shader Engine, USSE),此模塊為芯片的運(yùn)算中心。USSE可將各個(gè)著色器的工作(包括頂點(diǎn)處理和像素處理)自動(dòng)配置給USSE中多個(gè)執(zhí)行單元,讓硬件使用率達(dá)到最佳狀態(tài);最后是省電技術(shù),除了 TBDR外,同時(shí)也使用頻率閘控方式來(lái)確保最少的待機(jī)耗電量。PowerVR SGX的硬件架構(gòu)如圖3所示,主要包括主處理器接口、系統(tǒng)存儲(chǔ)器接口、幾何圖形管理器、圖像合成處理器(ISP)、粗粒度調(diào)度器(CGS)、通用可伸縮著色引擎 (USSE)、塊協(xié)處理器以及多級(jí)緩存等。3D圖形處理芯片是一個(gè)比較復(fù)雜的系統(tǒng),往往由很多特殊和復(fù)雜功能的子系統(tǒng)組成。下面是三角形在PowerVR SGX管線渲染的工作流程步驟I :基本圖元數(shù)據(jù)通過(guò)粗粒度調(diào)度器CGS模塊處理后遞交給通用可伸縮著色引擎(USSE),處理過(guò)程是通過(guò)頂點(diǎn)著色器程序來(lái)產(chǎn)生輸出。步驟2 :輸出的數(shù)據(jù)被傳送到塊著色單元。它負(fù)責(zé)場(chǎng)景的裁剪、表面剔除和分塊渲染。之后,塊著色單元將其產(chǎn)生的壓縮數(shù)據(jù)流傳入到內(nèi)存中,圖像綜合處理器(ISP)對(duì)分立的塊中的相關(guān)三角形進(jìn)行渲染。步驟3 :經(jīng)過(guò)這一系列設(shè)置操作,三角形數(shù)據(jù)真正進(jìn)行了深度/模板測(cè)試的加工。步驟4 :之后這些分塊的數(shù)據(jù)會(huì)被傳送到ISP然后進(jìn)入到USSE進(jìn)行片段著色。步驟5 =UUSE的數(shù)據(jù)處理結(jié)果將被像素協(xié)處理器處理運(yùn)算后寫(xiě)入片上的緩沖區(qū)中。步驟6:輸出顯示。上面描述了三角形在PowerVR SGX中的渲染過(guò)程,下面就其進(jìn)行3D圖像顯示及大規(guī)模數(shù)據(jù)處理流程進(jìn)行詳細(xì)描述。(I)構(gòu)建場(chǎng)景數(shù)據(jù)。第一步主要由CPU執(zhí)行操作,CPU運(yùn)行由OpenGL編寫(xiě)的程序,程序的輸出都是基于基本的三角形操作,輸出被存放到緩沖區(qū)內(nèi),對(duì)于PVRSG (PowerVR Second Generation technology),這個(gè)緩沖區(qū)必須大到容納所有的三角形數(shù)據(jù)。(2)分塊操作。這是PVRSG執(zhí)行的第一個(gè)操作,不同于在傳統(tǒng)的立即渲染技術(shù)中計(jì)算場(chǎng)景緩沖區(qū)中每一個(gè)多邊形,而不管可見(jiàn)與否。PVRSG只是渲染那些最終在屏幕上可見(jiàn)的像素。PowerVR的TBR (TiIe-Based Rendering)在幾何運(yùn)算后,將屏幕的像素分成了很多矩形小塊,先經(jīng)過(guò)每個(gè)小塊的深度測(cè)試,測(cè)試小塊是否可見(jiàn)決定小塊中的像素是否應(yīng)當(dāng)被渲染,之后將需要被渲染的部分再交給渲染管線去處理,最后輸出。這樣一來(lái),不可見(jiàn)的像素已經(jīng)提前被剔去不用被渲染,很大程于上節(jié)省了帶寬,減少了渲染管線的壓力。(3)隱藏表面算法。隱藏表面算法是PVRSG很有趣的一部分,隱藏表面算法作用于每一個(gè)小塊,每塊大約32x16像素。工作流程如下(a)從塊緩沖區(qū)獲得指向特定具體塊的第一個(gè)指針;(b) 使用獲得的三角形數(shù)據(jù)為這個(gè)塊中的每個(gè)像素計(jì)算得到深度值(Z-value) ; (c)計(jì)算得到的擁有深度值的塊被存儲(chǔ)在片上芯片中,然后計(jì)算下一個(gè)塊,如此循環(huán)直到結(jié)束。(4)渲染。渲染需要使用前面獲得信息一個(gè)包含所有的像素將要被渲染的塊的緩沖區(qū),指向存放在場(chǎng)景緩沖區(qū)中的三角型數(shù)據(jù)的指針,這些數(shù)據(jù)決定了頂點(diǎn)的顏色和其他一些屬性。(5)傳送到幀緩沖。最后一步很顯然就是將所有要輸出顯示的塊轉(zhuǎn)移到緩沖區(qū)中的顯示內(nèi)存中,完畢就可以完整的顯示場(chǎng)景了。這里可以加入反鋸齒的一些操作。系統(tǒng)的軟件部分包括OpenGL ES、SDL、EGL三大部分,下面針對(duì)OpenGL ES進(jìn)行詳細(xì)的描述。圖4顯示的是OpenGL ES 2. O可編程管線處理流程。相對(duì)于OpenGL ES I. X固定管線,OpenGL ES 2. O中的Vertex Shader和Fragment Shader是兩個(gè)可編程功能模塊,因此,可以通過(guò)該功能來(lái)實(shí)現(xiàn)現(xiàn)實(shí)3D的快速顯示。OpenGL ES本質(zhì)上是一個(gè)圖形渲染管線的狀態(tài)機(jī),主要對(duì)圖元進(jìn)行頂點(diǎn)和片段著色處理,外加其他一些附加渲染,最后將處理結(jié)果交給FrameBufTer (幀緩存)。而EGL則是用于監(jiān)控這些狀態(tài)以及維護(hù)Framebuffer和其他渲染Surface的外部層。圖5是一個(gè)典型的EGL系統(tǒng)布局圖。OpenGL ES圖形管線的狀態(tài)被存儲(chǔ)于EGL管理的一個(gè)Context中。Frame Buffers 和其他繪制Surfaces通過(guò)EGLAPI創(chuàng)建、管理和銷(xiāo)毀。EGL同時(shí)也控制和提供了對(duì)設(shè)備顯示和可能的設(shè)備渲染配置的訪問(wèn)。OpenGL本身并不支持一些交互性操作,所以我們引入了 SDL來(lái)實(shí)現(xiàn)人機(jī)交互,通過(guò)引入鍵盤(pán)、鼠標(biāo)事件以及觸摸屏來(lái)實(shí)現(xiàn)對(duì)3D場(chǎng)景的控制、變換視角、旋轉(zhuǎn)、縮放、漫游和其他娛樂(lè)功能(如點(diǎn)擊標(biāo)志來(lái)觀看視頻等等)。以上描述了客戶端的硬件架構(gòu)和軟件平臺(tái),本發(fā)明所提出的基于服務(wù)端和客戶端的系統(tǒng),其主要流程包括服務(wù)端模型制作、數(shù)據(jù)操作、客戶端CPU和嵌入式GPU初始化、 場(chǎng)景渲染、3D場(chǎng)景顯示和資源回收等部分。在這里所述的CPU和嵌入式GPU分別指的是 ARMCortex-A8 和 PowerVR SGX。
(I)模型制作在服務(wù)器端運(yùn)行三維建模軟件,例如3DMax Maya等軟件,完成三維地圖建模和場(chǎng)景設(shè)置,得到帶渲染的數(shù)據(jù)文件,并將這些3D數(shù)據(jù)存放于3D-GIS數(shù)據(jù)庫(kù)中。(2)數(shù)據(jù)操作服務(wù)器根據(jù)客戶終端發(fā)來(lái)的請(qǐng)求,確定所需要的2D和3D地圖數(shù)據(jù),并從GIS數(shù)據(jù)庫(kù)中獲取這些數(shù)據(jù),最后將這些數(shù)據(jù)傳送給客戶終端。所需的2D和3D地圖數(shù)據(jù),是根據(jù)客戶終端發(fā)送過(guò)來(lái)的請(qǐng)求確定的。用戶在進(jìn)行地圖選擇時(shí),通過(guò)鼠標(biāo)或者觸摸屏選擇所需要的地圖部分,該部分為用戶期望顯示于顯示屏中央的部分,如果該部分的3D數(shù)據(jù)在客戶端不存在,那么客戶終端想服務(wù)器發(fā)送請(qǐng)求獲取數(shù)據(jù)。服務(wù)器根據(jù)用戶所需要的位置,從3D-GIS數(shù)據(jù)庫(kù)獲取該部分的3D數(shù)據(jù),并從2D-GIS 數(shù)據(jù)庫(kù)獲取所需地圖位置周邊區(qū)域的2D數(shù)據(jù),并將這些2D、3D數(shù)據(jù)一起發(fā)送給客戶終端。 客戶端接受這些數(shù)據(jù)并進(jìn)行顯示。(3)客戶終端CPU和GPU初始化CPU開(kāi)辟內(nèi)存空間,加載地圖數(shù)據(jù)到內(nèi)存中,SDL 初始化,提供觸摸屏、鼠標(biāo)、鍵盤(pán)響應(yīng)的支持;串口驅(qū)動(dòng)程序接收和解析GPS協(xié)議數(shù)據(jù);嵌入式GPU初始化,開(kāi)辟足夠的顯存存放三角形數(shù)據(jù)。(4)場(chǎng)景渲染CPU將需要渲染的靜態(tài)幀渲染任務(wù)分解成若干渲染子任務(wù)(以塊為單位),通過(guò)總線發(fā)送到嵌入式GPU,嵌入式GPU并行渲染節(jié)點(diǎn),對(duì)渲染子任務(wù)并行處理,完成渲染工作,得到渲染后的靜態(tài)幀。其中涉及到透明和半透明圖形處理。(5) 3D場(chǎng)景顯示嵌入式GPU計(jì)算得到的數(shù)據(jù)傳送到屏幕顯示映射內(nèi)存空間并在觸摸顯示屏上進(jìn)行顯示。(6)資源回收程序結(jié)束后,CPU釋放開(kāi)辟的內(nèi)存空間,GPU釋放開(kāi)辟的顯存空間, 進(jìn)行資源回收。為了能夠充分利用嵌入式GPU PowerVR的強(qiáng)大功能,需要結(jié)合其硬件特性進(jìn)行程序設(shè)計(jì)。并按順序執(zhí)行以下五個(gè)步驟(I) InitApplication :這函數(shù)是在任何API函數(shù)初始化之前被調(diào)用,用于加載應(yīng)用程序所需數(shù)據(jù),例如物體位置,頂點(diǎn)數(shù)據(jù)數(shù)組等,而不需要調(diào)用其他任何API函數(shù)。在這里我們實(shí)現(xiàn)開(kāi)辟內(nèi)存空間,以用來(lái)加載地圖數(shù)據(jù);(2) InitView :這個(gè)函數(shù)在InitApplication函數(shù)被初始化后調(diào)用,用來(lái)做剩余的初始化工作,由函數(shù)來(lái)調(diào)用完成。在這里主要是初始化串口,以用于傳輸GPS定位信息,以及SDL和EGL的初始化等操作。(3) RenderScene :這個(gè)函數(shù)循環(huán)被調(diào)用來(lái)繪制所有幾何物體。返回false值進(jìn)入退出序列。在這里加載的地圖數(shù)據(jù)和大規(guī)模場(chǎng)景數(shù)據(jù)被送到嵌入式GPU中進(jìn)行運(yùn)算,采用了 TBDR技術(shù),通過(guò)頂點(diǎn)和片段著色單元計(jì)算最后的輸出數(shù)據(jù),并將最終數(shù)據(jù)保存在內(nèi)存區(qū)域中。(4) ReleaseView :這個(gè)函數(shù)在API函數(shù)被釋放前調(diào)用,用于釋放API函數(shù)調(diào)用的系統(tǒng)資源,例如頂點(diǎn)和片段緩沖區(qū)的釋放。(5) QuitApplication :這個(gè)函數(shù)最后被調(diào)用,當(dāng)所有的API函數(shù)被釋放后,它用來(lái)釋放剩余的用戶分配的內(nèi)存。整個(gè)客戶端的程序設(shè)計(jì)圖如圖6所示,其中包括了終端對(duì)用戶的響應(yīng)以及與服務(wù)端的交互。在本發(fā)明中,我們引入了嵌入式GPU =PowerVR.,它為我們解決了嵌入式設(shè)備中的功耗過(guò)大、帶寬不足、運(yùn)算緩慢等技術(shù)瓶頸,引領(lǐng)了移動(dòng)設(shè)備和手持設(shè)備多核化的新潮流。 能夠?qū)崿F(xiàn)高清晰的多細(xì)節(jié)的3D大規(guī)模場(chǎng)景的快速實(shí)現(xiàn)。最后應(yīng)說(shuō)明的是,以上實(shí)例只是針對(duì)所提方案的一個(gè)實(shí)現(xiàn)例程,只是為了說(shuō)明本發(fā)明而不是限制本發(fā)明描述的技術(shù)方案;因此盡管本說(shuō)明書(shū)參考上述的實(shí)施實(shí)例對(duì)本發(fā)明進(jìn)行詳細(xì)的說(shuō)明,但本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,仍然可以對(duì)本發(fā)明進(jìn)行修改或者等同替換;而一切不脫離本發(fā)明的精神和范圍的技術(shù)方案及其改進(jìn),其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.嵌入式GPU實(shí)現(xiàn)3D-GIS的快速渲染系統(tǒng),其特征在于系統(tǒng)包括服務(wù)器,GIS數(shù)據(jù)庫(kù),客戶終端,服務(wù)器和客戶終端通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交互,地圖數(shù)據(jù)保存在GIS數(shù)據(jù)庫(kù)中, 客戶終端獲得地圖數(shù)據(jù)后進(jìn)行3D地圖的顯示。
2.根據(jù)權(quán)利要求I所述的嵌入式GPU實(shí)現(xiàn)3D-GIS的快速渲染系統(tǒng),其特征在于所述服務(wù)器的功能,主要包括制作模型、控制數(shù)據(jù)流、數(shù)據(jù)獲取、數(shù)據(jù)傳送四個(gè)部分,其中制作模型表示服務(wù)器具有對(duì)三維地圖進(jìn)行建模和場(chǎng)景設(shè)置以生成3D數(shù)據(jù)的功能;控制數(shù)據(jù)流表示服務(wù)器具有控制數(shù)據(jù)接收和發(fā)送以及控制從GIS數(shù)據(jù)庫(kù)獲取的數(shù)據(jù)量和向用戶發(fā)送的數(shù)據(jù)量的功能;數(shù)據(jù)獲取表示服務(wù)器需要從GIS數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)訪問(wèn)并將獲得數(shù)據(jù)傳送給用戶;數(shù)據(jù)傳送表示服務(wù)器需要將數(shù)據(jù)傳送給用戶。
3.根據(jù)權(quán)利要求I所述的嵌入式GPU實(shí)現(xiàn)3D-GIS的快速渲染系統(tǒng),其特征在于所述 GIS數(shù)據(jù)庫(kù)包括由兩個(gè)部分組成,2D-GIS數(shù)據(jù)庫(kù)和3D-GIS數(shù)據(jù)庫(kù),分別存放2D和3D地圖數(shù)據(jù)。
4.根據(jù)權(quán)利要求I所述的嵌入式GPU實(shí)現(xiàn)3D-GIS的快速渲染系統(tǒng),其特征在于所述客戶終端為嵌入式終端,包括兩類(lèi)處理單元組成嵌入式CPU和嵌入式GPU,嵌入式CPU負(fù)責(zé)一般的控制和計(jì)算,嵌入式GPU負(fù)責(zé)3D場(chǎng)景的快速渲染以實(shí)現(xiàn)畫(huà)面的快速顯示。
5.根據(jù)權(quán)利要求I所述的嵌入式GPU實(shí)現(xiàn)3D-GIS的快速渲染系統(tǒng),其特征在于所述客戶終端可以為移動(dòng)終端,也可以為固定終端,客戶終端與服務(wù)器交互的網(wǎng)絡(luò)可以是有線網(wǎng)絡(luò)和無(wú)線網(wǎng)絡(luò)。
6.根據(jù)權(quán)利要求I所述服務(wù)器和客戶終端的交互,其特征在于客戶終端向服務(wù)器進(jìn)行數(shù)據(jù)請(qǐng)求,請(qǐng)求包含需要顯示3D地圖對(duì)應(yīng)的地理位置信息,服務(wù)器根據(jù)該位置信息向 GIS數(shù)據(jù)庫(kù)獲取數(shù)據(jù),獲取的數(shù)據(jù)為客戶端所請(qǐng)求地理位置的3D地圖數(shù)據(jù)及該地理位置周邊區(qū)域的2D地圖數(shù)據(jù),并將這些數(shù)據(jù)一并傳送給客戶終端。
7.根據(jù)權(quán)利要求I所述服務(wù)器和客戶終端的交互,其特征在于客戶終端將獲得地圖數(shù)據(jù)進(jìn)行顯示,其中包括2D和3D數(shù)據(jù),顯示在客戶終端顯示屏上的是3D地圖,在這些地圖周?chē)?D地圖數(shù)據(jù)存放于客戶終端本地,當(dāng)用戶對(duì)顯示地圖進(jìn)行移動(dòng)時(shí),這些2D地圖則會(huì)被顯示,不需要再與服務(wù)器進(jìn)行交互,但是如果用戶所選擇地理位置部分沒(méi)有3D數(shù)據(jù),并且本地存在2D數(shù)據(jù),則進(jìn)行2D地圖顯示,并向服務(wù)器進(jìn)行數(shù)據(jù)請(qǐng)求,否則如果客戶終端本地不存在2D數(shù)據(jù),則直接向服務(wù)器進(jìn)行數(shù)據(jù)請(qǐng)求。
全文摘要
本發(fā)明針對(duì)在一般嵌入式平臺(tái)上進(jìn)行大量三維運(yùn)算中存在的計(jì)算資源短缺的問(wèn)題提出了一種基于嵌入式GPU實(shí)現(xiàn)3D-GIS的快速渲染系統(tǒng)。使用嵌入式GPU滿足了嵌入式平臺(tái)低功耗、大運(yùn)算、低帶寬的計(jì)算資源要求,實(shí)現(xiàn)了嵌入式平臺(tái)上3D-GIS的快速渲染及顯示。本發(fā)明公開(kāi)的系統(tǒng)由服務(wù)器、GIS數(shù)據(jù)庫(kù)和客戶終端三大部分組成,通過(guò)網(wǎng)絡(luò)可以實(shí)現(xiàn)用戶終端和服務(wù)器的實(shí)時(shí)交互,借助嵌入式GPU強(qiáng)大的并行計(jì)算能力和3D渲染算法,最終實(shí)現(xiàn)在嵌入式終端上進(jìn)行實(shí)時(shí)顯示3D地圖的功能。
文檔編號(hào)G06F17/30GK102609971SQ20121000693
公開(kāi)日2012年7月25日 申請(qǐng)日期2012年1月11日 優(yōu)先權(quán)日2012年1月11日
發(fā)明者嚴(yán)正飛, 劉燁, 季曉勇, 張李曄, 王健, 韋峰 申請(qǐng)人:南京大學(xué)