国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于GPU的氣象站點(diǎn)填圖繪制方法

2018-02-25 14:27劉冰戴超
電子技術(shù)與軟件工程 2018年12期
關(guān)鍵詞:著色器

劉冰 戴超

摘要 本文結(jié)合OpenGL及GPU渲染管線技術(shù),探討了一種使用c++語(yǔ)言開(kāi)發(fā)的支持MICAPS氣象站點(diǎn)數(shù)據(jù)的GPU繪制方法。該方法基于GPU高速標(biāo)繪技術(shù),利用GPU的并行計(jì)算能力,使用頂點(diǎn)著色器和片斷著色器,將站點(diǎn)數(shù)據(jù)進(jìn)行網(wǎng)格化處理后進(jìn)行繪制。實(shí)際工程應(yīng)用結(jié)果表明,具有較高的圖形圖像顯示速度,從而保證流暢的用戶(hù)體驗(yàn)。

【關(guān)鍵詞】氣象站點(diǎn)填圖 GPU編程 GL 著色器

隨著自動(dòng)氣象站在全國(guó)各地廣泛建設(shè)和投入,充分發(fā)揮氣象觀測(cè)站業(yè)務(wù)和社會(huì)效益,對(duì)氣象站圖形展示方式的直觀性、清晰性和高效性提出更高要求。目前應(yīng)用于氣象業(yè)務(wù)及科研使用的圖形處理系統(tǒng)有MICAPS系統(tǒng)、Fortan、GRADS、Surfer軟件等。在繪圖應(yīng)用方面,黃天文[1]提出使用VC++的MFC庫(kù)6 0版本開(kāi)發(fā)氣象地面填圖系統(tǒng);郭建民[2]利用Flash結(jié)合Asp開(kāi)發(fā)區(qū)域氣象資料填圖WEB顯示系統(tǒng);扎西才讓[3]等由Visual Basic6.0企業(yè)版,開(kāi)發(fā)青海省自動(dòng)氣象站資料應(yīng)用系統(tǒng)。從以上研究可以看出,氣象站圖形顯示系統(tǒng)在業(yè)務(wù)工作中的廣泛性。

本文結(jié)合OpenGL語(yǔ)言及GL著色器,探討了支持MICAPS(含第一類(lèi)、第二類(lèi)和第三類(lèi)數(shù)據(jù))氣象站點(diǎn)數(shù)據(jù)的GPU繪制方法。該方法使用c++語(yǔ)言開(kāi)發(fā),具有原生程序所特有的速度快、系統(tǒng)資源需求低的優(yōu)點(diǎn)。此外,GPU作為顯卡的“大腦”,使用GPU并行化繪圖方法,可顯著提高圖形圖像顯示速度,從而保證流暢的用戶(hù)體驗(yàn)。

1 氣象站點(diǎn)填圖數(shù)據(jù)

氣象站點(diǎn)填圖數(shù)據(jù)包括三大類(lèi),分別為地面全要素填圖數(shù)據(jù)、高空全要素填圖數(shù)據(jù)及通用填圖數(shù)據(jù)。氣象站點(diǎn)數(shù)據(jù)說(shuō)明見(jiàn)表1。

2 GPU渲染管線

GPU在硬件設(shè)計(jì)上采用許多簡(jiǎn)單的流處理器,減少原本用于復(fù)雜邏輯控制和緩存管理的晶體管,用以增加并行處理單元和存儲(chǔ)控制單元。與CPU相比,GPU的優(yōu)勢(shì)為強(qiáng)大的并行處理能力和高效率的數(shù)據(jù)傳輸能力。與CPU相同,GPU也可以用任意的指令序列進(jìn)行編程,執(zhí)行你可以想象得到的任何計(jì)算。在現(xiàn)代GPU上,圖形運(yùn)算中常見(jiàn)的運(yùn)算操作執(zhí)行速度非???。通常情況下,最快的操作是標(biāo)量和向量的乘法和加法,以及他們的組合,如乘加和點(diǎn)乘運(yùn)算。其他如倒數(shù)、平方根、正弦、余弦、指數(shù)、對(duì)數(shù)運(yùn)算,往往導(dǎo)致開(kāi)銷(xiāo)增大,但依然相當(dāng)快捷。紋理操作非常高效。

GPU渲染管線處理流程如圖1所示。其中頂點(diǎn)著色器和片斷著色器是完全可編程的。

2.1 可編程頂點(diǎn)著色器

頂點(diǎn)著色器可以對(duì)每個(gè)頂點(diǎn)進(jìn)行諸如變換和變形在內(nèi)的很多操作,提供了修改、創(chuàng)建、忽略頂點(diǎn)屬性(包括顏色、法線、紋理坐標(biāo)和位置)的功能。它是完全可編程的,由vertexshader完成。輸入與輸出一一對(duì)應(yīng),即一個(gè)頂點(diǎn)被處理后仍然是一個(gè)頂點(diǎn),各頂點(diǎn)間的處理相互獨(dú)立,可以并行完成。

2.2 可編程片斷著色器

片斷著色器主要作用是進(jìn)行像素處理,讓復(fù)雜的著色方程在每一個(gè)像素上執(zhí)行。它是完全可編程的,由geometry shader完成。輸入和輸出不是一一對(duì)應(yīng),一個(gè)圖元被處理后可以生成O個(gè)或者多個(gè)圖元,各圖元處理也是相互獨(dú)立的。本階段輸出一個(gè)新的圖元流。

2.3 固定功能膠水

在頂點(diǎn)著色器和片斷著色器之間,仍然保留的一些固定功能階段,作為粘貼兩種著色器的膠水,包括裁剪階段、光柵化等階段。

3 網(wǎng)格化數(shù)據(jù)設(shè)計(jì)

考慮不同站點(diǎn)的同一類(lèi)型填圖數(shù)據(jù)顯示的內(nèi)容包含相同的要素,同時(shí)每一種要素使用的繪制方式均相同,包括位置、氣象現(xiàn)象、顯示顏色、旋轉(zhuǎn)等效果。設(shè)計(jì)使用網(wǎng)格數(shù)據(jù)進(jìn)行數(shù)據(jù)存儲(chǔ)。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)見(jiàn)表2。

4 GPU繪制實(shí)現(xiàn)方法

制作RGBA格式的天氣符號(hào)紋理貼圖??紤]到站點(diǎn)填圖使用的氣象符號(hào)共200余類(lèi),以像素為單位設(shè)計(jì)使用紋理貼圖大小為1024*1024,每個(gè)符號(hào)大小為32*32。根據(jù)紋理貼圖計(jì)算每個(gè)符號(hào)在紋理貼圖上的紋理坐標(biāo),為便于對(duì)氣象符號(hào)紋理坐標(biāo)進(jìn)行管理,可使用xml配置文件建立氣象符號(hào)與紋理坐標(biāo)間的索引。依據(jù)實(shí)際顯示效果要求,也可設(shè)計(jì)多幅紋理貼圖。

利用GPU繪制技術(shù),實(shí)現(xiàn)氣象站點(diǎn)填圖功能的處理流程如圖2所示。

具體過(guò)程包含以下步驟:

(1)數(shù)據(jù)預(yù)處理:解析天氣填圖數(shù)據(jù)并數(shù)據(jù)網(wǎng)格化處理;

(2)著色器:

首先,使用glewlnit()初始化環(huán)境;

其次,使用glCreateShader()創(chuàng)建頂點(diǎn)和片段著色器對(duì)象。同時(shí),使用gIShaderSource()指定著色器文本。OpenGL著色器語(yǔ)言(GLSL)可以方便地用于頂點(diǎn)和片段著色器。

第三,使用glCompileShader()編譯著色器??梢酝ㄟ^(guò)glGetShaderiv和glGetShaderInfoLog查詢(xún)編譯是否成功及編譯失敗所產(chǎn)生的錯(cuò)誤信息。

(3)程序?qū)ο螅撼绦驅(qū)ο笞鳛橹鲗?duì)象的容器使用,把它們鏈接到一個(gè)可執(zhí)行文件。

首先,使用glCreateProgram()創(chuàng)建程序?qū)ο螅?/p>

其次,使用glAttachShader()把著色器對(duì)象粘附到程序?qū)ο笾小?/p>

(4)建立標(biāo)繪數(shù)據(jù)的數(shù)組,包括頂點(diǎn)數(shù)組和頂點(diǎn)索引數(shù)組。同一類(lèi)型氣象填圖數(shù)據(jù)的不同站點(diǎn)數(shù)據(jù)中包含多個(gè)標(biāo)繪數(shù)據(jù),每個(gè)標(biāo)繪數(shù)據(jù)以頂點(diǎn)數(shù)組的數(shù)據(jù)格式進(jìn)行存儲(chǔ)。標(biāo)繪數(shù)據(jù)的數(shù)據(jù)格式見(jiàn)表2。頂點(diǎn)索引數(shù)組對(duì)應(yīng)每一個(gè)頂點(diǎn)數(shù)據(jù),繪制時(shí)提交頂點(diǎn)數(shù)據(jù)的時(shí)候,直接指定頂點(diǎn)索引,頂點(diǎn)索引會(huì)一一映射到頂點(diǎn)數(shù)據(jù),這樣就消除了冗余的頂點(diǎn)數(shù)據(jù),以更加靈活的方式進(jìn)行渲染;

(5)創(chuàng)建頂點(diǎn)緩沖對(duì)象(VBO)。從CPU端向GPU端一次性提交所有繪制數(shù)據(jù),將頂點(diǎn)數(shù)據(jù)存放在圖像顯卡的內(nèi)存中;同時(shí),用戶(hù)可根據(jù)VBO用途,制定性能提示參數(shù),OpenGL根據(jù)該提示,盡可能將數(shù)據(jù)放置在性能最優(yōu)的內(nèi)存中(顯存、AGP內(nèi)存或者CPU內(nèi)存);

(6)創(chuàng)建索引緩沖對(duì)象(IBO),存儲(chǔ)頂點(diǎn)索引數(shù)據(jù);

(7)綁定程序?qū)ο蟆J褂胓lUseProgram綁定程序?qū)ο?,使用gIGetUniformLocation和glUniformlf等函數(shù)傳入?yún)?shù)數(shù)據(jù);

(8)利用OpenGL的可編程渲染管線技術(shù),使用著色器語(yǔ)言( GLSL)的vertex頂點(diǎn)和fragment片元著色器處理。其中,頂點(diǎn)著色器操作的是頂點(diǎn),基本任務(wù)是產(chǎn)生頂點(diǎn)位置gl_Position;片元著色器用于計(jì)算輸出片元的顏色gl_Color;將頂點(diǎn)著色器和片段著色器載入到顯卡的存儲(chǔ)單元在圖形流水線中使用GPU執(zhí)行,完成繪制處理;

(9)繪制流程結(jié)束時(shí),需要釋放開(kāi)辟使用的各種內(nèi)存資源。避免資源過(guò)度開(kāi)銷(xiāo)。

5 顯示效果

在加載包含國(guó)境線、道路、行政地名、地物等地圖數(shù)據(jù)的矢量地圖上,繪制2006年04月12日05時(shí)的全球地面全站點(diǎn)(Micaps第一類(lèi)數(shù)據(jù))要素顯示效果如圖3所示。首次上圖顯示用時(shí)不超過(guò)Is,在不同比例尺下對(duì)地圖進(jìn)行漫游、縮放操作時(shí),響應(yīng)時(shí)間均不超過(guò)lS。

6 結(jié)束語(yǔ)

隨著計(jì)算機(jī)功能及氣象探索方法技術(shù)含量的提升,人們能獲取氣象信息的途徑和方法日益增多,同時(shí)氣象信息的圖形顯示技術(shù)也越來(lái)越重要。本文使用基于GPU的高性能標(biāo)繪技術(shù),探討了支持MICAPS氣象站點(diǎn)數(shù)據(jù)的繪制方法。實(shí)際工程應(yīng)用結(jié)果表明,具有較高的圖形圖像顯示速度,從而保證流暢的用戶(hù)體驗(yàn)。文中詳細(xì)描述了GPU使用步驟,對(duì)軟件開(kāi)發(fā)者有一定的參考價(jià)值。

參考文獻(xiàn)

[1]黃天文,焦飛.基于vc++的氣象地面填圖系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī)(專(zhuān)業(yè)版),2006 (04):105 -107.

[2]郭建民,區(qū)域氣象觀測(cè)資料Flash填圖[J].寧夏農(nóng)林科技,2012,53 (09):122-123.

[3]扎西才讓?zhuān)唔樐?,徐亮?青海省自動(dòng)氣象站資料應(yīng)用系統(tǒng)[J].青??萍迹?004 (04): 58-60.

[4]李世丹,陳星豪,一種基于OpenGL的圖形渲染加速方法[J].電腦知識(shí)與技術(shù),2012,8 (01):194-196.

[5]盧風(fēng)順,宋君強(qiáng),銀??档?CPU/GPU協(xié)同并行計(jì)算研究綜述[J].計(jì)算機(jī)科學(xué),2011,38 (03): 5-9.

[6]吳恩華,圖形處理器用于通用計(jì)算的技術(shù)、現(xiàn)狀及其挑戰(zhàn)[J],軟件學(xué)報(bào),2004,15 (10):1493-1504.

[7]張琪,付飛譯.OpenGL超級(jí)寶典(第四版)[M].北京:人民郵電出版社,2010.

[8] Akenine-Moller T,Hanies E,HoffmanN. Real-Time Rendering, ThirdEdition[J].Cre Press,2008.

[9]段同樂(lè),劉文展,劉海娟.基于GPU的大批量目標(biāo)高速標(biāo)繪技術(shù)研究[J].計(jì)算機(jī) 與網(wǎng)絡(luò),2015 (11):48-50.

[10]張志明,牟海波.基于GPU的戰(zhàn)場(chǎng)態(tài)勢(shì)實(shí)時(shí)處理與顯示技術(shù)優(yōu)化[J].指揮控制與仿真,2017 (06): 39.

猜你喜歡
著色器
零建模也能制作“大波浪”,Blender著色器教程
“魔戒”鑄造指南:Blender建模著色教程
基于UE4 實(shí)時(shí)射線追蹤技術(shù)的研究與探討
基于Unity Shader石油泄漏現(xiàn)象模擬的研究
基于IMx6的opengl圖形著色器開(kāi)發(fā)研究
基于可編程GPU的光照模型實(shí)驗(yàn)案例設(shè)計(jì)
基于WebGL的在線圖像瀏覽器的設(shè)計(jì)與實(shí)現(xiàn)
河道流動(dòng)水體三維仿真方法研究
DirectX 12來(lái)臨! 異步著色器讓你輕松玩游戲
基于可編程渲染管線的雷達(dá)圖像分層模型設(shè)計(jì)與實(shí)現(xiàn)