999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenGL的電子戰綜合顯控系統設計

2010-06-28 03:04:36
艦船電子對抗 2010年4期
關鍵詞:跨平臺環境

方 旭

(船舶重工集團公司723所,揚州225001)

1 傳統電子戰綜合顯控系統中存在的問題

傳統的電子戰綜合顯控系統經過了許多年的發展和完善,技術相對成熟,應用比較廣泛。隨著電子戰發展的需要,既往技術也顯示出許多局限性,存在一些難以解決的問題。

(1)目標顯示能力差

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

(2)負載不均衡

現在計算機通常都配備了多核CPU和強大的顯卡。CPU體系結構仍然以32位為主,64位的還少,而主流的顯卡位寬都達到了256位。完全基于CPU運算所實現的顯控系統,由于傳統編程方式的限制,所有的圖形處理都是由單個CPU獨自完成的,常常是CPU忙于復雜的圖形繪制操作,CPU占用率不斷地提高,而256位寬的顯卡卻很空閑,明顯負載不均衡。

(3)難以跨平臺移植

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

2 基于OpenGL的綜合顯控系統解決方案

為了解決上述問題,作者認為可以應用Open-GL技術實現電子戰綜合顯控系統。

2.1 關于OpenGL

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

一個與OpenGL相關的系統結構為:最底層是圖形硬件,第2層為操作系統,第3層為窗口系統,第4層為OpenGL,第5層為應用程序。

OpenGL專注于圖形處理的各個方面,在設計時充分考慮到了平臺的獨立性,在實現時不依賴于任何窗口系統或操作系統。OpenGL在很多硬件平臺上都提供了具體的實現,移植時只需要變更底層的窗口操作,而不需要進行太多的變動。這種設計理念可以幫助我們在不同的平臺(如Windows、Unix、Linux 、Mac OS 、OS/2)之間進行移植。

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

已經有一些商業公司以及開源組織以OpenGL為基礎構筑了Open Inventor、Cosmo3D、Optimizer等多種高級圖形庫,提供了眾多預定義的對象,開發人員也可以直接利用它們來快速構造自己的系統模型。

2.2 OpenGL工作流程

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

圖中頂點數據和象素數據為兩種OpenGL支持的原始數據。頂點數據包括模型的頂點集、線集、多邊形集,用來描述幾何模型。這些數據經過運算器、逐個頂點操作、圖元裝配等。Pixel data則包括像素集、影像集、位圖集等。

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

流水線上關鍵的處理階段如下:

(1)顯示列表

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

(2)運算器

提供了一種根據頂點(控制點)導出描述曲面的方法。這種方法是一種多項式映射,能夠根據頂點生成法向量、紋理坐標和空間坐標值。

(3)逐個頂點操作

將頂點轉換為圖元,需要使用4×4的浮點數矩陣進行變換,將三維空間坐標投影到屏幕上。

(4)圖元裝配

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

(5)像素操作

像素操作首先將系統內存的像素數組進行拆封,從某種格式轉換為合適數目的分量;接下來對數據進行縮放、偏移和像素映射;然后將得到的數據進行截取,并將其寫入紋理內存或發送給光柵化操作進行處理。

(6)紋理裝配

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

(7)光柵化

將幾何數據和像素數據轉換為片元。每個片元都對應于幀緩存中的一個像素。這個階段確定了每個片元的顏色和深度值。

(8)逐個片元操作

這個階段首先進行紋理映射、霧計算、裁剪測試、模板測試和深度測試,然后執行混合、拌動、邏輯運算和屏蔽,最后處理完成的片元被送到幀緩沖器中顯示。

2.3 OpenGL與Direct 3D的比較

在Window s平臺上,微軟提出了自己的三維圖形開發庫Direct3D,并且伴隨著Windows操作系統的不斷普及,應用范圍也相當廣泛,為三維圖形開發提供了新的手段。OpenGL成為目前三維圖形開發事實上的工業標準,被許多顯卡硬件所支持。兩者在競爭中不斷地完善與發展。

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

Direct3D是基于微軟的組件對象模型(COM)的三維圖形API。開發人員基于COM的客戶端、服務端對象進行面向組件的編程,簡化了整個程序的設計。可是,COM技術本身就是一項非常復雜的技術,學習COM開發的周期相當長,對于新加入的開發人員難以很快地上手。由于Direct3D是微軟的商業產品,無法查看實現的源代碼,許多底層的實現細節問題開發人員很難接觸到,系統查錯和性能調優困難。OpenGL是一個過程式的三維圖形API,主要基于傳統的C語言進行過程式開發,在程序中使用頭文件包含和動態鏈接庫等傳統技術。執行流程非常清晰,靈活性強,系統查錯和性能調優容易。

Direct3D必須由系統硬件支持,不支持純軟件的仿真。而OpenGL可以支持軟件仿真,不是簡單地報錯或是退出。雖然微軟為了推廣Direct3D系統,已經宣布不再支持新版本的OpenGL。可是使用開源項目mase3D可以在不支持最新OpenGL版本的Windows機器上,利用底層的GDI庫來模擬仿真出OpenGL的全部功能,方便進行移植工作。

Direct3D僅能用于Windows系列平臺。OpenGL可以支持多種操作系統平臺。支持多種操作系統平臺,這對于開發軍品項目是非常必要的。

Direct3D包含圖形、聲音、輸入、網絡等各種多媒體模塊。OpenGL只是圖形函數庫。

微軟對 Direct3D的更新非常頻繁。OpenGL規范較Direct3D更加嚴謹,版本更新少,版本更新中新增技術少。OpenGL 3.1是2009年3月Khronos Group公布的最新版本,業界圖形廠商很快予以了大力支持。AMD、NVIDIA、S3 Graphics的顯卡驅動目前都已經支持OpenGL 3.0。

3 基于OpenGL的綜合顯控系統的開發

由于微軟不再更新OpenGL的實現,只能遵循OpenGL 1.1標準來構造系統。

3.1 Windows的OpenGL結構

OpenGL是 client/server結構,即 client(用OpenGL繪制景物的應用程序)向 server(OpenGL內核)發出OpenGL命令,server解釋這些命令。所以,OpenGL可以十分方便地在網絡環境下使用。OpenGL體系結構見圖1。

圖1 OpenGL體系結構

OpenGL被封裝在Windows的動態鏈接庫OpenGL32.DLL中。客戶應用程序調用的Open-GL命令依次在OpenGL32.DLL、WINSRV.DLL、Win32的設備驅動接口(DDI)中處理,最后經過處理的圖形命令被送給顯卡設備驅動程序。

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

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

(1)包含必要的頭文件

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

(2)增加并創建渲染環境

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

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

(3)調整窗口大小

第一次繪制視圖或者改變視圖大小時,需要重新設置渲染模型。glViewport重設當前視口的范圍,glMatrixMode指定不同的坐標轉換矩陣,gl-LoadIdentity重置當前矩陣。

(4)繪圖操作

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

為了保證充分利用OpenGL直接操縱硬件繪圖,不應該使用設備環境進行繪圖。

(5)清理環境

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

3.3 GDI繪圖與OpenGL繪圖結果比較

這里給出GDI繪圖及OpenGL繪圖產生的電子戰綜合顯控系統屏幕截圖,如圖2和圖3所示。可以看出,圖3比圖2具有更強的表現力,顯示效果更好。

圖2 GDI繪制的綜合顯控系統態勢圖

圖3 OpenGL繪制的綜合顯控系統態勢圖

4 總結

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

4.1 提高了系統的表現能力

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

4.2 實現了負載均衡

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

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

OpenGL系統能夠將繪圖命令直接轉換為底層顯卡的硬件指令,在整個繪圖過程中無需CPU的加入,充分利用了顯卡的性能,實現了負載均衡。

4.3 解決了跨平臺移植難題

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

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

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

猜你喜歡
跨平臺環境
跨層級網絡、跨架構、跨平臺的數據共享交換關鍵技術研究與系統建設
長期鍛煉創造體內抑癌環境
一款游戲怎么掙到全平臺的錢?
電腦報(2021年11期)2021-07-01 08:10:05
一種用于自主學習的虛擬仿真環境
孕期遠離容易致畸的環境
不能改變環境,那就改變心境
環境
跨平臺APEX接口組件的設計與實現
測控技術(2018年9期)2018-11-25 07:44:58
孕期遠離容易致畸的環境
基于QT的跨平臺輸電鐵塔監控終端軟件設計與實現
主站蜘蛛池模板: 一本大道视频精品人妻 | www.亚洲天堂| 亚洲国模精品一区| 国产精品视频a| 亚洲 日韩 激情 无码 中出| 永久免费无码成人网站| 91丝袜美腿高跟国产极品老师| 91尤物国产尤物福利在线| 国产一级在线观看www色| 在线播放精品一区二区啪视频| 午夜国产精品视频黄| 亚洲精品图区| 国产激情无码一区二区三区免费| 丁香五月激情图片| 99青青青精品视频在线| 色精品视频| 国产后式a一视频| 国产亚洲欧美日本一二三本道| 无码视频国产精品一区二区| 亚洲视频一区在线| 亚洲人成成无码网WWW| 亚洲男人天堂2018| 99久久无色码中文字幕| 男女男免费视频网站国产| 超清无码一区二区三区| 欧美亚洲国产精品久久蜜芽| 久久精品欧美一区二区| 国产成人AV男人的天堂| 国产精品亚洲一区二区三区在线观看| 在线精品欧美日韩| 国产第一页屁屁影院| 伊人久久大香线蕉综合影视| 福利姬国产精品一区在线| 日韩欧美网址| 国产91高清视频| 国产浮力第一页永久地址| 亚洲女同欧美在线| 农村乱人伦一区二区| 91偷拍一区| 日本高清有码人妻| 婷婷伊人五月| 日本成人不卡视频| 国产精品19p| 一本大道无码日韩精品影视| 精品视频在线观看你懂的一区 | 成人一级黄色毛片| 成AV人片一区二区三区久久| 久久精品丝袜| 在线色国产| 欧美一级高清视频在线播放| 国产精品久久久久久久久kt| 精品国产三级在线观看| 免费一级大毛片a一观看不卡 | 美女被躁出白浆视频播放| 日韩无码真实干出血视频| 香蕉eeww99国产精选播放| 国产精品13页| 无码乱人伦一区二区亚洲一| 国产尤物视频在线| 久久久久国产精品免费免费不卡| 国产三级韩国三级理| 欧美成一级| 亚洲婷婷丁香| 国产精品自拍露脸视频| 日本精品一在线观看视频| 中文字幕无码中文字幕有码在线| 国产91丝袜在线播放动漫 | 国产激情在线视频| 蝌蚪国产精品视频第一页| 三上悠亚在线精品二区| av性天堂网| 国产午夜无码专区喷水| 色噜噜狠狠色综合网图区| 国产美女叼嘿视频免费看| 国产福利一区在线| a在线亚洲男人的天堂试看| 日韩免费毛片| 香蕉精品在线| 欧美亚洲欧美| 国产人前露出系列视频| 国产精品入口麻豆| 无码高潮喷水专区久久|