亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于OpenGL的電子戰(zhàn)綜合顯控系統(tǒng)設(shè)計(jì)

        2010-06-28 03:04:36
        艦船電子對(duì)抗 2010年4期
        關(guān)鍵詞:跨平臺(tái)控系統(tǒng)繪圖

        方 旭

        (船舶重工集團(tuán)公司723所,揚(yáng)州225001)

        1 傳統(tǒng)電子戰(zhàn)綜合顯控系統(tǒng)中存在的問題

        傳統(tǒng)的電子戰(zhàn)綜合顯控系統(tǒng)經(jīng)過了許多年的發(fā)展和完善,技術(shù)相對(duì)成熟,應(yīng)用比較廣泛。隨著電子戰(zhàn)發(fā)展的需要,既往技術(shù)也顯示出許多局限性,存在一些難以解決的問題。

        (1)目標(biāo)顯示能力差

        通常在一個(gè)態(tài)勢(shì)圖上只能提供兩維的信息,一個(gè)目標(biāo)有許多必須的、有很強(qiáng)相關(guān)性的參數(shù),由于受到顯示技術(shù)的限制,難以集成到一個(gè)面板中去,往往需要提供多個(gè)面板,讓用戶在各個(gè)面板之間進(jìn)行頻繁的切換,甚至在幾個(gè)機(jī)柜之間通過操作員直接交流的方式來實(shí)現(xiàn)相互溝通,才能完整描述出當(dāng)前的戰(zhàn)場(chǎng)環(huán)境,傳統(tǒng)方式很難讓用戶滿意。需要提供一種實(shí)時(shí)性與表現(xiàn)力更強(qiáng)的顯控系統(tǒng),幫助指揮員更好地了解戰(zhàn)場(chǎng)周圍狀況,從而提供更好的戰(zhàn)術(shù)決策支持。

        (2)負(fù)載不均衡

        現(xiàn)在計(jì)算機(jī)通常都配備了多核CPU和強(qiáng)大的顯卡。CPU體系結(jié)構(gòu)仍然以32位為主,64位的還少,而主流的顯卡位寬都達(dá)到了256位。完全基于CPU運(yùn)算所實(shí)現(xiàn)的顯控系統(tǒng),由于傳統(tǒng)編程方式的限制,所有的圖形處理都是由單個(gè)CPU獨(dú)自完成的,常常是CPU忙于復(fù)雜的圖形繪制操作,CPU占用率不斷地提高,而256位寬的顯卡卻很空閑,明顯負(fù)載不均衡。

        (3)難以跨平臺(tái)移植

        傳統(tǒng)的綜合顯控系統(tǒng)是針對(duì)具體的硬件、操作系統(tǒng)平臺(tái)進(jìn)行開發(fā)的。但是由于各個(gè)平臺(tái)之間存在很大的差異性,難以實(shí)現(xiàn)跨平臺(tái)移植。特別是Window s不開放源代碼,用它來開發(fā)軍品項(xiàng)目存在難以預(yù)測(cè)的安全問題。如何便于跨平臺(tái)移植,將基于Windows的軟件移植到其它更加安全的系統(tǒng)上,也是開發(fā)過程中需要考慮的重要問題。

        2 基于OpenGL的綜合顯控系統(tǒng)解決方案

        為了解決上述問題,作者認(rèn)為可以應(yīng)用Open-GL技術(shù)實(shí)現(xiàn)電子戰(zhàn)綜合顯控系統(tǒng)。

        2.1 關(guān)于OpenGL

        OpenGL是一個(gè)跨編程語言、跨平臺(tái)的圖形硬件編程接口規(guī)范,是行業(yè)領(lǐng)域中最為廣泛接納的2D/3D圖形應(yīng)用編程接口(API)。在最新發(fā)布的OpenGL 2.1版本中包含了700多個(gè)獨(dú)立的圖形操作函數(shù)(核心庫中約有650個(gè),輔助函數(shù)約50個(gè)),開發(fā)者可以利用這些函數(shù)來構(gòu)造景物模型,進(jìn)行交互式三維圖形應(yīng)用軟件的開發(fā)。

        一個(gè)與OpenGL相關(guān)的系統(tǒng)結(jié)構(gòu)為:最底層是圖形硬件,第2層為操作系統(tǒng),第3層為窗口系統(tǒng),第4層為OpenGL,第5層為應(yīng)用程序。

        OpenGL專注于圖形處理的各個(gè)方面,在設(shè)計(jì)時(shí)充分考慮到了平臺(tái)的獨(dú)立性,在實(shí)現(xiàn)時(shí)不依賴于任何窗口系統(tǒng)或操作系統(tǒng)。OpenGL在很多硬件平臺(tái)上都提供了具體的實(shí)現(xiàn),移植時(shí)只需要變更底層的窗口操作,而不需要進(jìn)行太多的變動(dòng)。這種設(shè)計(jì)理念可以幫助我們?cè)诓煌钠脚_(tái)(如Windows、Unix、Linux 、Mac OS 、OS/2)之間進(jìn)行移植。

        在OpenGL中,只能使用5種基本的幾何圖元(點(diǎn)、線、三角形、四邊形、多邊形)。雖然沒有提供用于描述復(fù)雜三維物體(如汽車、人體、飛機(jī))的高級(jí)函數(shù),但是可以用基本的圖元來構(gòu)造出任意復(fù)雜的物體,靈活性強(qiáng),便于軟件開發(fā)人員控制。

        已經(jīng)有一些商業(yè)公司以及開源組織以O(shè)penGL為基礎(chǔ)構(gòu)筑了Open Inventor、Cosmo3D、Optimizer等多種高級(jí)圖形庫,提供了眾多預(yù)定義的對(duì)象,開發(fā)人員也可以直接利用它們來快速構(gòu)造自己的系統(tǒng)模型。

        2.2 OpenGL工作流程

        當(dāng)繪圖命令傳遞給OpenGL后,OpenGL需要進(jìn)行一系列的運(yùn)算操作才能最終在屏幕上顯示出來。這一系列的過程稱為OpenGL渲染流水線。

        圖中頂點(diǎn)數(shù)據(jù)和象素?cái)?shù)據(jù)為兩種OpenGL支持的原始數(shù)據(jù)。頂點(diǎn)數(shù)據(jù)包括模型的頂點(diǎn)集、線集、多邊形集,用來描述幾何模型。這些數(shù)據(jù)經(jīng)過運(yùn)算器、逐個(gè)頂點(diǎn)操作、圖元裝配等。Pixel data則包括像素集、影像集、位圖集等。

        兩種不同類型的數(shù)據(jù)經(jīng)過流水線進(jìn)行各自的處理后,最后都經(jīng)過紋理裝配、光柵化、逐個(gè)片元操作直至把光柵數(shù)據(jù)寫入幀緩沖器。

        流水線上關(guān)鍵的處理階段如下:

        (1)顯示列表

        顯示列表中暫存了想要執(zhí)行的繪圖命令序列。

        (2)運(yùn)算器

        提供了一種根據(jù)頂點(diǎn)(控制點(diǎn))導(dǎo)出描述曲面的方法。這種方法是一種多項(xiàng)式映射,能夠根據(jù)頂點(diǎn)生成法向量、紋理坐標(biāo)和空間坐標(biāo)值。

        (3)逐個(gè)頂點(diǎn)操作

        將頂點(diǎn)轉(zhuǎn)換為圖元,需要使用4×4的浮點(diǎn)數(shù)矩陣進(jìn)行變換,將三維空間坐標(biāo)投影到屏幕上。

        (4)圖元裝配

        對(duì)幾何體中位于半空間之外的部分進(jìn)行裁剪,對(duì)幾何物體做投影除法,使得遠(yuǎn)處的物體看起來比近處的物體小。

        (5)像素操作

        像素操作首先將系統(tǒng)內(nèi)存的像素?cái)?shù)組進(jìn)行拆封,從某種格式轉(zhuǎn)換為合適數(shù)目的分量;接下來對(duì)數(shù)據(jù)進(jìn)行縮放、偏移和像素映射;然后將得到的數(shù)據(jù)進(jìn)行截取,并將其寫入紋理內(nèi)存或發(fā)送給光柵化操作進(jìn)行處理。

        (6)紋理裝配

        可以將紋理圖案粘貼到幾何物體上,提供物體的真實(shí)感。

        (7)光柵化

        將幾何數(shù)據(jù)和像素?cái)?shù)據(jù)轉(zhuǎn)換為片元。每個(gè)片元都對(duì)應(yīng)于幀緩存中的一個(gè)像素。這個(gè)階段確定了每個(gè)片元的顏色和深度值。

        (8)逐個(gè)片元操作

        這個(gè)階段首先進(jìn)行紋理映射、霧計(jì)算、裁剪測(cè)試、模板測(cè)試和深度測(cè)試,然后執(zhí)行混合、拌動(dòng)、邏輯運(yùn)算和屏蔽,最后處理完成的片元被送到幀緩沖器中顯示。

        2.3 OpenGL與Direct 3D的比較

        在Window s平臺(tái)上,微軟提出了自己的三維圖形開發(fā)庫Direct3D,并且伴隨著Windows操作系統(tǒng)的不斷普及,應(yīng)用范圍也相當(dāng)廣泛,為三維圖形開發(fā)提供了新的手段。OpenGL成為目前三維圖形開發(fā)事實(shí)上的工業(yè)標(biāo)準(zhǔn),被許多顯卡硬件所支持。兩者在競(jìng)爭(zhēng)中不斷地完善與發(fā)展。

        OpenGL和Direct3D都以經(jīng)典的流水線方式來處理圖像渲染工作,流水線中核心模塊都通過硬件直接支持,提升了渲染性能。

        Direct3D是基于微軟的組件對(duì)象模型(COM)的三維圖形API。開發(fā)人員基于COM的客戶端、服務(wù)端對(duì)象進(jìn)行面向組件的編程,簡(jiǎn)化了整個(gè)程序的設(shè)計(jì)??墒?COM技術(shù)本身就是一項(xiàng)非常復(fù)雜的技術(shù),學(xué)習(xí)COM開發(fā)的周期相當(dāng)長(zhǎng),對(duì)于新加入的開發(fā)人員難以很快地上手。由于Direct3D是微軟的商業(yè)產(chǎn)品,無法查看實(shí)現(xiàn)的源代碼,許多底層的實(shí)現(xiàn)細(xì)節(jié)問題開發(fā)人員很難接觸到,系統(tǒng)查錯(cuò)和性能調(diào)優(yōu)困難。OpenGL是一個(gè)過程式的三維圖形API,主要基于傳統(tǒng)的C語言進(jìn)行過程式開發(fā),在程序中使用頭文件包含和動(dòng)態(tài)鏈接庫等傳統(tǒng)技術(shù)。執(zhí)行流程非常清晰,靈活性強(qiáng),系統(tǒng)查錯(cuò)和性能調(diào)優(yōu)容易。

        Direct3D必須由系統(tǒng)硬件支持,不支持純軟件的仿真。而OpenGL可以支持軟件仿真,不是簡(jiǎn)單地報(bào)錯(cuò)或是退出。雖然微軟為了推廣Direct3D系統(tǒng),已經(jīng)宣布不再支持新版本的OpenGL??墒鞘褂瞄_源項(xiàng)目mase3D可以在不支持最新OpenGL版本的Windows機(jī)器上,利用底層的GDI庫來模擬仿真出OpenGL的全部功能,方便進(jìn)行移植工作。

        Direct3D僅能用于Windows系列平臺(tái)。OpenGL可以支持多種操作系統(tǒng)平臺(tái)。支持多種操作系統(tǒng)平臺(tái),這對(duì)于開發(fā)軍品項(xiàng)目是非常必要的。

        Direct3D包含圖形、聲音、輸入、網(wǎng)絡(luò)等各種多媒體模塊。OpenGL只是圖形函數(shù)庫。

        微軟對(duì) Direct3D的更新非常頻繁。OpenGL規(guī)范較Direct3D更加嚴(yán)謹(jǐn),版本更新少,版本更新中新增技術(shù)少。OpenGL 3.1是2009年3月Khronos Group公布的最新版本,業(yè)界圖形廠商很快予以了大力支持。AMD、NVIDIA、S3 Graphics的顯卡驅(qū)動(dòng)目前都已經(jīng)支持OpenGL 3.0。

        3 基于OpenGL的綜合顯控系統(tǒng)的開發(fā)

        由于微軟不再更新OpenGL的實(shí)現(xiàn),只能遵循OpenGL 1.1標(biāo)準(zhǔn)來構(gòu)造系統(tǒng)。

        3.1 Windows的OpenGL結(jié)構(gòu)

        OpenGL是 client/server結(jié)構(gòu),即 client(用OpenGL繪制景物的應(yīng)用程序)向 server(OpenGL內(nèi)核)發(fā)出OpenGL命令,server解釋這些命令。所以,OpenGL可以十分方便地在網(wǎng)絡(luò)環(huán)境下使用。OpenGL體系結(jié)構(gòu)見圖1。

        圖1 OpenGL體系結(jié)構(gòu)

        OpenGL被封裝在Windows的動(dòng)態(tài)鏈接庫OpenGL32.DLL中。客戶應(yīng)用程序調(diào)用的Open-GL命令依次在OpenGL32.DLL、WINSRV.DLL、Win32的設(shè)備驅(qū)動(dòng)接口(DDI)中處理,最后經(jīng)過處理的圖形命令被送給顯卡設(shè)備驅(qū)動(dòng)程序。

        3.2 在微軟基礎(chǔ)類庫(MFC)中使用OpenGL

        在MFC框架中,可以很容易地使用OpenGL。以下給出基本步驟:

        (1)包含必要的頭文件

        為了能夠支持OpenGL,在工程中必須包含GL.H、GLU.H和GLAUX.H三個(gè)頭文件。將頭文件包含放在預(yù)定義頭文件stdafx.h中,可以減少多次包含工作。MFC庫自動(dòng)將所需的導(dǎo)入庫OpenGL32.lib和GLu32.lib以及靜態(tài)鏈接庫GLaux.lib包含到鏈接選項(xiàng)中,不必手工增加這些鏈接庫。

        (2)增加并創(chuàng)建渲染環(huán)境

        在Windows環(huán)境下,繪圖操作是在窗口的設(shè)備環(huán)境(Device Context)上進(jìn)行操作的。在使用OpenGL時(shí),需要提供一個(gè)渲染環(huán)境,系統(tǒng)通過渲染環(huán)境將所有的OpenGL調(diào)用命令連接到設(shè)備環(huán)境上。這里聲明了渲染環(huán)境變量m_hRC,并在創(chuàng)建視圖的同時(shí)初始化了渲染環(huán)境。

        在MFC的視圖窗口創(chuàng)建成功后,需要設(shè)置窗口像素格式。在結(jié)構(gòu)體pfd中設(shè)置標(biāo)志位dwFlags為PFD_DRAW_TO_WINDOW(支持窗口設(shè)備繪制),PFD_SUPPORT_OPENGL(支持 OpenGL),PFD_DOUBLEBUFFER(支持雙緩沖技術(shù)),iPixel-Type為PFD_TYPE_RGBA,給出指定的色彩深度cColorBits、深度緩存cDepthBits以及其他必要的參數(shù)設(shè)置。然后調(diào)用 ChoosePixelFormat和 Set-PixelFormat來設(shè)置窗口像素格式。接著調(diào)用wgl-CreateContext創(chuàng)建一個(gè)和設(shè)備環(huán)境相適應(yīng)的渲染環(huán)境m_hRC。最后調(diào)用wglMakeCurrent關(guān)聯(lián)設(shè)備環(huán)境和渲染環(huán)境。

        (3)調(diào)整窗口大小

        第一次繪制視圖或者改變視圖大小時(shí),需要重新設(shè)置渲染模型。glViewport重設(shè)當(dāng)前視口的范圍,glMatrixMode指定不同的坐標(biāo)轉(zhuǎn)換矩陣,gl-LoadIdentity重置當(dāng)前矩陣。

        (4)繪圖操作

        實(shí)際的繪圖操作放在OnDraw成員函數(shù)中。glClear清除屏幕內(nèi)容和深度緩存,glLoadIdentity重置當(dāng)前的模型觀察矩陣。glBegin和glEnd封裝一組相關(guān)的頂點(diǎn)序列、定義幾何圖元。

        為了保證充分利用OpenGL直接操縱硬件繪圖,不應(yīng)該使用設(shè)備環(huán)境進(jìn)行繪圖。

        (5)清理環(huán)境

        程序退出時(shí),需要釋放系統(tǒng)資源,再次調(diào)用wglMakeCurrent分離渲染環(huán)境窗口設(shè)備環(huán)境,wglDeleteContext釋放渲染環(huán)境。凡是在繪制過程中創(chuàng)建出的系統(tǒng)資源(包括二次曲面、樣條曲線、紋理對(duì)象、顯示列表等),都需要在退出時(shí)被釋放。

        3.3 GDI繪圖與OpenGL繪圖結(jié)果比較

        這里給出GDI繪圖及OpenGL繪圖產(chǎn)生的電子戰(zhàn)綜合顯控系統(tǒng)屏幕截圖,如圖2和圖3所示??梢钥闯?圖3比圖2具有更強(qiáng)的表現(xiàn)力,顯示效果更好。

        圖2 GDI繪制的綜合顯控系統(tǒng)態(tài)勢(shì)圖

        圖3 OpenGL繪制的綜合顯控系統(tǒng)態(tài)勢(shì)圖

        4 總結(jié)

        綜上所述,針對(duì)傳統(tǒng)綜合顯控系統(tǒng)中存在的問題,可用基于OpenGL的綜合顯控系統(tǒng)得到解決。

        4.1 提高了系統(tǒng)的表現(xiàn)能力

        利用OpenGL技術(shù)可以在一個(gè)界面中集成盡可能多的參數(shù)信息,可以賦予一種仿真的、三維的并且具有實(shí)時(shí)交互能力的態(tài)勢(shì)顯示,可以在三維圖形世界中用以前不可想象的手段來獲取目標(biāo)的信息以及分析周圍環(huán)境的狀況。

        4.2 實(shí)現(xiàn)了負(fù)載均衡

        通用計(jì)算的發(fā)展趨勢(shì)是中央處理單元(CPU)和繪圖處理單元(GPU)的整合。需要復(fù)雜條件控制的、只能串行處理的任務(wù)適合于CPU承擔(dān)。GPU定位為CPU的協(xié)處理器,大量數(shù)據(jù)并行計(jì)算的任務(wù)適合于GPU承擔(dān)。

        圖形渲染適合于并行處理,CPU實(shí)際上難以勝任圖形渲染任務(wù)。GPU編程以流式編程模型為基礎(chǔ),這種并行處理允許高效計(jì)算和通信。

        OpenGL系統(tǒng)能夠?qū)⒗L圖命令直接轉(zhuǎn)換為底層顯卡的硬件指令,在整個(gè)繪圖過程中無需CPU的加入,充分利用了顯卡的性能,實(shí)現(xiàn)了負(fù)載均衡。

        4.3 解決了跨平臺(tái)移植難題

        在基于OpenGL的綜合顯控系統(tǒng)實(shí)現(xiàn)過程中,不需要編寫直接訪問底層操作系統(tǒng)的繪圖代碼,只需要利用OpenGL提供的標(biāo)準(zhǔn)API函數(shù),便可以實(shí)現(xiàn)與設(shè)備無關(guān)的操作,提高了編程效率。如果需要跨平臺(tái)移植,只需要更改與平臺(tái)相關(guān)部分的代碼——窗口管理。對(duì)核心的繪圖操作,只要底層的顯卡能夠支持OpenGL,則無需修改。解決了平臺(tái)間移植的難題,同時(shí)也解決了Windows操作系統(tǒng)的不安全問題。

        [1]Dave Shreiner,Mason Woo,Jackie Neider,Tom Davis.OpenGL Programming Guide Sixth Edition[M].Massachusetts:Addison-Wesley,2007.

        [2]丁藝明,劉波.利用GPU進(jìn)行高性能數(shù)據(jù)并行計(jì)算[J].程序員,2008(4):97-99.

        猜你喜歡
        跨平臺(tái)控系統(tǒng)繪圖
        來自河流的你
        中國三峽(2022年7期)2022-12-02 05:28:02
        “禾下乘涼圖”繪圖人
        關(guān)于DALI燈控系統(tǒng)的問答精選
        聯(lián)調(diào)聯(lián)試中列控系統(tǒng)兼容性問題探討
        跨平臺(tái)APEX接口組件的設(shè)計(jì)與實(shí)現(xiàn)
        基于HTML5 Canvas繪圖技術(shù)應(yīng)用
        一種新型列控系統(tǒng)方案探討
        Surfer和ArcView結(jié)合在氣象繪圖中的應(yīng)用
        河北遙感(2015年2期)2015-07-18 11:11:14
        基于QT的跨平臺(tái)輸電鐵塔監(jiān)控終端軟件設(shè)計(jì)與實(shí)現(xiàn)
        基于OPC跨平臺(tái)通信的電機(jī)監(jiān)測(cè)與診斷系統(tǒng)
        中文字幕久久熟女人妻av免费| aaaaa级少妇高潮大片免费看| 国产91网| 热门精品一区二区三区| 亚洲一二三区免费视频| 色妞色视频一区二区三区四区| 婷婷五月综合激情| AV无码系列一区二区三区| 人妻精品一区二区三区蜜桃| 日本熟妇色xxxxx日本妇| 亚洲av无码av吞精久久| 亚洲AV无码成人精品区日韩密殿| 日韩av在线手机免费观看| 风情韵味人妻hd| 久久久久久成人毛片免费看 | 亚洲熟妇夜夜一区二区三区| 亚洲无人区乱码中文字幕能看| 国模吧无码一区二区三区| 婷婷五月综合激情| 亚洲愉拍自拍视频一区| 国产黑色丝袜在线看片| www插插插无码视频网站| 亚洲AV无码成人品爱| 国产精品久久国产精麻豆| 亚洲国产精品日本无码网站 | 巨臀精品无码AV在线播放| 蜜桃视频第一区免费观看| 久久无码专区国产精品| 国产乱人视频在线看| 精品专区一区二区三区| 蜜桃视频插满18在线观看| 免费xxx在线观看| 国产丰满乱子伦无码专| 男男亚洲av无一区二区三区久久| 国产综合无码一区二区辣椒 | 亚洲乱码中文字幕综合| 免费国产黄片视频在线观看| 精品久久人妻av中文字幕| 让少妇高潮无乱码高清在线观看| 国产高清无码在线| 日韩男女av中文字幕|