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

基于MFC消息機制與Direct3D的雷達目標(biāo)顯示實現(xiàn)

2014-09-08 11:53:18李華君張曉峰
雷達與對抗 2014年3期
關(guān)鍵詞:方法

李華君,楊 震,張曉峰

(中國船舶重工集團公司第七二四研究所,南京 211153)

基于MFC消息機制與Direct3D的雷達目標(biāo)顯示實現(xiàn)

李華君,楊 震,張曉峰

(中國船舶重工集團公司第七二四研究所,南京 211153)

針對現(xiàn)代雷達綜合化和信息化的發(fā)展趨勢,為滿足對雷達目標(biāo)的多功能處理以及顯示容量提升的需求,提出了一種在MFC構(gòu)架下結(jié)合DirectX圖形技術(shù)實現(xiàn)較大數(shù)量目標(biāo)顯示控制的方法。該方法使用Window控件來封裝雷達目標(biāo)類,利用控件的實現(xiàn)及其消息映射機制簡化目標(biāo)在終端顯示時的生成、選取、更新、刪除及疊加等功能處理中的計算和消息響應(yīng)過程,同時采用Direct3D技術(shù)降低目標(biāo)的繪制和刷新時間,提高了目標(biāo)的顯示批數(shù)。

MFC;消息映射機制;Direct3D;雷達目標(biāo)顯示

0 引 言

雷達終端用來顯示雷達所獲取的目標(biāo)信息和情報,顯示內(nèi)容包括目標(biāo)的位置、坐標(biāo)及其運動情況,以及目標(biāo)的特征參數(shù)等。早期的雷達終端主要采用模擬技術(shù)來顯示雷達的原始圖像。隨著數(shù)字技術(shù)的飛速發(fā)展、雷達功能的擴展及信息化程度的提高,現(xiàn)代雷達的終端顯示也發(fā)生了較大的變化。除了顯示雷達原始視頻外,還要顯示處理后的雷達數(shù)據(jù),生成直觀可見的界面目標(biāo)圖示,同時對其進行各種功能的處理和操作。智能化及綜合一體化的武器裝備發(fā)展趨勢進一步要求雷達終端不僅需要顯示本雷達探測的信息情報,還需要顯示信息化組網(wǎng)后多源提供的各種信息。雷達終端顯示日趨復(fù)雜,對目標(biāo)顯示的實時性和可操作性提出了更高的要求。在同等硬件資源支撐下,如何便捷地對目標(biāo)進行管理、對目標(biāo)顯示進行優(yōu)化,提升顯示的目標(biāo)數(shù)量,成為需要解決的一項課題。隨著軟件開發(fā)技術(shù)的發(fā)展,為設(shè)計者在Windows系統(tǒng)下使用軟件實現(xiàn)終端顯示提供了更多的技術(shù)手段和設(shè)計自由度,用以解決雷達終端顯示設(shè)計中所面臨的挑戰(zhàn)[1]。

著眼于雷達終端顯示中雷達目標(biāo)的實現(xiàn),通過對比以往設(shè)計中的軟件技術(shù)方法,改進設(shè)計思路,本文提出了一種在MFC構(gòu)架下結(jié)合DirectX圖形技術(shù)將界面目標(biāo)管理功能實現(xiàn)簡化和提升目標(biāo)顯示數(shù)量的方法。

1 基本原理

1.1 MFC概述

MFC是一個架構(gòu)在Windows API之上的C++類庫,意圖使Windows程序設(shè)計更加高效簡便,其實現(xiàn)基于程序的自動初始化、執(zhí)行時類型識別、動態(tài)生成、消息映射及命令繞行等關(guān)鍵技術(shù)。盡管Windows下的代碼實現(xiàn)被逐步向.NET框架下引導(dǎo),其對編程語言、代碼通用性、體系架構(gòu)、內(nèi)存管理等諸多方面拓展了相關(guān)概念和技術(shù),對原有的架構(gòu)進行重組和優(yōu)化,但對于面向?qū)ο驛PI的封裝、動態(tài)生成及消息映射等技術(shù)和思想?yún)s依然沿襲[3]。

Windows程序基于事件驅(qū)動,靠消息的流動而維護生命。在MFC之中只要是CCmdTarget類的繼承類,都納入其消息傳遞的機制中,為每個類型的消息建立相應(yīng)的消息映射表,并且將基礎(chǔ)類別和衍生類別的消息映射表串接起來。在此基礎(chǔ)上,MFC通過一系列的宏定義將消息縱向或橫向的傳遞映射到不同類的成員函數(shù)進行處理,如圖1所示。

圖1 MFC消息映射機制示意圖

同時,MFC封裝了大量的類和控件可供設(shè)計者使用,如CWnd類以及其繼承類CStatic等。CStatic類的資源實體以控件的形式存在,其類實現(xiàn)和對消息機制的響應(yīng)可為雷達目標(biāo)類的封裝和實現(xiàn)使用。

1.2 DirectX簡介

DirectX是Microsoft公司開發(fā)的運行于計算機平臺的多媒體控制處理引擎。基于DirectX API 設(shè)計開發(fā)的多媒體軟件運行于硬件抽象層上,即充分利用了系統(tǒng)硬件的加速功能,又隱藏了硬件相關(guān)的設(shè)備特性,通過編寫可兼容不同設(shè)備特性的高效代碼,提高運行效率。

Direct3D是DirectX 技術(shù)的重要組成部分,是一種軟件接口。它通過提供對顯示存儲的直接訪問, 以及快速實現(xiàn)硬件的位塊轉(zhuǎn)移和緩存翻轉(zhuǎn)性能, 從而加速硬件和軟件圖形的實時處理。除了能直接對顯示設(shè)備存取外, Direct3D還保持同Windows 圖形設(shè)備接口GDI、基于Windows環(huán)境的應(yīng)用程序和設(shè)備驅(qū)動程序兼容的特性,并提供了一種與設(shè)備無關(guān)的方法以獲得訪問特定的顯示設(shè)備、 高級特性的能力[2]。

GDI+ 是一個Windows系統(tǒng)組件, 在GDI的基礎(chǔ)上實現(xiàn)的一個抽象層, 允許標(biāo)準(zhǔn)的Windows應(yīng)用程序向屏幕繪畫。GDI+的缺點是其提供的是對內(nèi)存而不是對視頻存儲器中的一個視頻緩存的訪問, 因此不能利用某些視頻卡所提供的特殊性能。由于GDI+建立在Windows的一個較高層面上,系統(tǒng)調(diào)用的開銷難免增加。另一方面, Direct3D可以提供代表實際視頻存儲器的繪畫圖面。 這就意味著當(dāng)使用Direct3D時可以直接寫到視頻卡上的存儲器中, 使用圖形例程極快。 這些圖面被表示為存儲器中相鄰的存儲塊, 從而可以很容易地對存儲器執(zhí)行尋址操作。

Direct3D、GDI+、硬件抽象層HAL 、硬件仿真層HEL 和硬件之間的關(guān)系如圖2所示。

圖2 Direct3D、GDI+和硬件關(guān)系示意圖

2 基于MFC消息機制與Direct3D的雷達目標(biāo)實現(xiàn)方法

目前,相當(dāng)數(shù)量應(yīng)用軟件轉(zhuǎn)到了Windows 平臺上。在Windows 平臺上,開發(fā)網(wǎng)絡(luò)、數(shù)據(jù)庫集成的多功能圖形顯示處理程序,對合理分配系統(tǒng)資源、維持程序高效運行并提高程序的復(fù)用性、節(jié)約開發(fā)時間提出了較高的要求。另一方面,隨著信息化武器裝備的發(fā)展,雷達終端不僅需要處理自身探測的目標(biāo),還需要和各種信息源傳遞大量數(shù)據(jù)。信息內(nèi)容的增加、信息交互的密集體現(xiàn)在雷達終端需處理的目標(biāo)批次的提升,加快了目標(biāo)的生成、分裂、合批、刪除及上報等操作和處理的頻率。

由于Windows系統(tǒng)的特殊性,接管了所有的系統(tǒng)資源,對設(shè)備的操作實際上是對Windows 功能的調(diào)用,雖提高了代碼設(shè)備無關(guān)性、可移植性和可復(fù)用性,但調(diào)用Windows 的API函數(shù)比直接操作硬件耗時增加。對于某些應(yīng)用程序來說,這種影響可能不太明顯,特別是在目前機器性能飛速提高的情況下更是如此。但是,對于目前部分裝備中對實時性較高的終端顯示處理來說,在對大量的目標(biāo)顯示和數(shù)據(jù)處理時,若每次都去調(diào)用API 函數(shù),耗時將會影響軟件的實際應(yīng)用。

針對上述面臨的需求和問題,通過結(jié)合MFC構(gòu)架中控件的消息響應(yīng)機制和DirectX繪圖方法封裝構(gòu)造目標(biāo)類,利用控件實現(xiàn)目標(biāo)生命周期中的管理、目標(biāo)操作和處理中的輸入響應(yīng),而將目標(biāo)的繪制和顯示交由Direct3D來完成,以達到簡化目標(biāo)設(shè)計,提高目標(biāo)處理容量的目的。

2.1 Direct3D與GDI+的使用

基于MFC構(gòu)建應(yīng)用程序主體框架,在其文檔/視圖構(gòu)架下,終端顯示畫面及目標(biāo)的顯示在P顯視圖中完成。和以往不同的是,考慮到Direct3D在二維曲線繪制和文字處理方面的欠缺,對雷達終端畫面中除目標(biāo)外的靜態(tài)顯示內(nèi)容依然采用GDI+進行繪制,處理方式如下:

(1) 在GDI+的原生模式下,在MFC應(yīng)用程序中加載GDI+動態(tài)鏈接庫,在P顯視圖窗口中完成GDI+的初始化;

(2) 在P顯視圖窗口刷新函數(shù)OnDraw()中使用GDI+接口完成所需顯示內(nèi)容的繪制;

(3) 將繪制的窗口以位圖或其他文件形式加以存儲;

(4) 創(chuàng)建Direct3D紋理對象,將GDI+繪制的圖像文件作為紋理加以載入。

一般情況下,P顯視圖窗口函數(shù)OnDraw()作為視圖的刷新接口,而在上述實現(xiàn)方式中僅作為利用GDI+繪制優(yōu)勢形成所需靜態(tài)位圖的生成接口,用以提供Direct3D顯示的底圖紋理,當(dāng)位圖文件生成后阻斷其常規(guī)刷新功能。P顯視圖窗口的刷新將由Direct3D函數(shù)OnRender()完成。

下面介紹在P顯視圖的實現(xiàn)中如何引入Direct3D。

(1) 創(chuàng)建Direct3D對象并得到Direct3D接口,對相關(guān)參數(shù)進行配置和初始化;

(2) 創(chuàng)建Direct3D設(shè)備對象并得到設(shè)備接口,將P顯視圖窗口的句柄綁定為Direct3D窗口句柄;

(3) 創(chuàng)建一個單獨的顯示線程用以處理Direct3D窗口的顯示和刷新函數(shù)OnRender()。

采用上述實現(xiàn),將P顯視圖窗口的句柄綁定為Direct3D窗口句柄,將其OnRender()函數(shù)作為P顯的刷新接口,解決了GDI+和Direct3D繪制同步問題。進一步采用單獨的線程處理顯示畫面的繪制和刷新,將刷新率較高的目標(biāo)顯示畫面從程序主線程中分離出來,將合理分配和調(diào)度計算機的系統(tǒng)資源,利于在系統(tǒng)空閑時對畫面進行渲染和刷新。通過MFC視圖和Direct3D的結(jié)合使用,為目標(biāo)提供了作為運行環(huán)境的父窗口,目標(biāo)的生成、刪除、繪制及顯示均由此P顯父窗口負(fù)責(zé)。

2.2 雷達目標(biāo)類的實現(xiàn)

目標(biāo)的實現(xiàn)是雷達終端顯示畫面中的一個主體部分。在面向?qū)ο蟮脑O(shè)計中,通過構(gòu)造和封裝目標(biāo)類,將其添加于父視圖中,通過父窗口的繪制刷新和消息響應(yīng)機制對目標(biāo)進行管理和操作。可能遇到的問題是,目標(biāo)的生命周期是一個動態(tài)過程,對目標(biāo)的處理是相對復(fù)雜的。如果設(shè)計為將目標(biāo)的產(chǎn)生、繪制、定位、更新、撤銷及疊加等所有管理都交由其父窗口處理,那么在進行目標(biāo)選取時處理諸如如何識別目標(biāo)和背景、目標(biāo)疊加時如何進行識別和分離等問題時都需要進行檢索和大量的計算,在目標(biāo)批次增加的情況下,程序的運行效率會受到一定影響。通過目標(biāo)檢索算法的優(yōu)化和目標(biāo)封裝的改進,可以對此類問題加以改善,但對設(shè)計者提出了更高的要求。而利用Windows控件的消息響應(yīng)機制,可以簡化在目標(biāo)實現(xiàn)時的此類問題。

在Windows MFC的類別階層架構(gòu)中,封裝了大量的用于圖形顯示的控件類。從其父類CWnd開始,通過類繼承以及類擴展,構(gòu)造出圖形顯示所需要的各界面元素,同時為這些類的各種消息響應(yīng)提供了相應(yīng)的處理函數(shù)。在控件的使用中,可通過消息處理函數(shù)的重載以及改變消息傳遞的次序和線路來完成所需的功能。如圖3所示,通過控件類CStatic構(gòu)造所需目標(biāo)子類CMytarget,而將CMyView類作為CMytarget的父窗口。目標(biāo)類CMytarget的實現(xiàn)方式主要分為如下幾步:

(1) 從Windows MFC類庫中的CWnd類或CStatic控件類派生出雷達目標(biāo)類;

(2) 根據(jù)雷達目標(biāo)的特性聲明和實現(xiàn)雷達目標(biāo)類的相關(guān)變量以及創(chuàng)建、銷毀等接口函數(shù);

(3) 重載從父類繼承的鼠標(biāo)和鍵盤消息響應(yīng)函數(shù),使雷達目標(biāo)類具有選取等操作的自處理響應(yīng)功能;

圖3 目標(biāo)類的消息映射示意圖

(4) 在目標(biāo)類中聲明目標(biāo)繪制的Direct3D位圖矩形頂點緩沖區(qū),同時引入其父窗口P顯視圖中創(chuàng)建的Direct3D設(shè)備接口,進行目標(biāo)繪制的頂點數(shù)據(jù)填充。在視P顯圖刷新接口OnRender()中,調(diào)用目標(biāo)的D3D繪制接口,完成目標(biāo)和父窗口的疊加繪制和刷新。

目標(biāo)類完成實現(xiàn)后,目標(biāo)的管理基于控件類的消息響應(yīng)機制,而繪制和刷新將結(jié)合Direct3D技術(shù)。目標(biāo)在作為運行環(huán)境的P顯父窗口中加以聲明,父窗口調(diào)用目標(biāo)的相應(yīng)成員函數(shù),基于對控件的動態(tài)管理來實現(xiàn)目標(biāo)的生成和銷毀等功能。同時,通過重載父窗口的PreTranslateMessage虛函數(shù),使父窗口中的鼠標(biāo)和鍵盤消息先由目標(biāo)類自動截獲,從而將目標(biāo)類的定位、更新及疊加等操作轉(zhuǎn)變?yōu)閷丶臋z索、移動等處理。通過改變消息映射的流動線路,完成了對目標(biāo)的自選取和自處理。消息處理完畢后再交還給父窗口,而目標(biāo)的繪制通過父窗口的渲染函數(shù)處理完成。

3 結(jié)果與分析

為了對上述方法的有效性進行驗證,選用配置為Intel Pentium Dual 2.20GHz、內(nèi)存為2GB的計算機進行了相關(guān)測試。分別使用GDI+、雙緩沖結(jié)合GDI+及Direct3D 三種方法對雷達目標(biāo)進行實現(xiàn)。在不同目標(biāo)批數(shù)下,每種方法的平均刷新時間如圖 4所示。

圖4 三種繪制方法刷新時間比較圖

從圖表數(shù)據(jù)分析不難得出, 在目標(biāo)數(shù)量小于300批時,三種方法的刷新時間雖小有差異,但均可滿足刷新的實時性要求;目標(biāo)數(shù)量達到500批時,使用GDI+繪制方法的時間斜率明顯增大,從現(xiàn)象上看目標(biāo)刷新線程和UI主線程的時間沖突開始體現(xiàn),程序的實時響應(yīng)受到一定影響;當(dāng)目標(biāo)數(shù)量達到1000批時,用雙緩沖優(yōu)化的GDI+繪制方法將無法達到要求,而采用Direct3D繪制方法的時間斜率較為平滑,可以處理近2000批目標(biāo)。

4 結(jié)束語

基于MFC和DirectX結(jié)合的雷達目標(biāo)實現(xiàn)方法,用Windows控件及其消息映射機制封裝出雷達目標(biāo)類,簡化了目標(biāo)的處理設(shè)計。可以通過進一步的優(yōu)化,將此控件類實現(xiàn)為動態(tài)鏈接庫或是COM組件,提高目標(biāo)類的可復(fù)用性和可擴展性。采用Direct3D實現(xiàn)目標(biāo)類的繪制和刷新,有效地提升了目標(biāo)處理的容量。而利用Direct3D的多層顯示、多緩沖及頁面切換等技術(shù),也有利于將Direct3D實現(xiàn)的雷達一次視頻和目標(biāo)顯示進行疊加實現(xiàn)。當(dāng)然,在使用Windows控件的自處理優(yōu)勢時目標(biāo)類也變得較“大而重”,從圖4中也可看出,當(dāng)目標(biāo)批數(shù)進一步增加后,如何提高此方法的目標(biāo)刷新率需進行進一步的探討。

[1] 丁鷺飛,耿富錄.雷達原理[M].3版.西安:西安電子科技大學(xué)出版社,2002.6.

[2] 陳卡,等.DirectX9 3D圖形程序設(shè)計[M].上海:上海科技出版社,2003.7.

[3] 侯俊杰.深入淺出MFC[M].2版.臺灣:松崗電腦圖資料股份有限公司,2002.10.

Implementation of radar target display based on MFC message mechanism and Direct3D

LI Hua-jun, YANG Zhen, ZHANG Xiao-feng

(No. 724 Research Institute of CSIC, Nanjing 211153)

In view of the integrated and information development trends of modern radars, a method of displaying and controlling large quantities of targets is presented based on the MFC and the DirectX graphic technology to satisfy the requirements of multi-function processing and display capacity upgrade of radar targets. The Window controls are used to encapsulate radar target class, and the realization of controls and the message mapping mechanism are utilized to simplify the calculation and message response process in the function processing such as generate, select, update, delete and overlap when targets are displayed on the terminal display. At the same time, the adoption of Direct3D technology decreases the refresh and plotting time of targets and increases the number of targets.

MFC; message mapping mechanism; Direct3D; radar target display

2014-05-28;

2014-06-12

李華君(1979-),工程師,碩士,研究方向:軟件應(yīng)用;楊震(1979-),男,工程師,研究方向:系統(tǒng)集成;張曉峰(1979-),男,高級工程師,碩士,研究方向:軟件應(yīng)用。

TN957.52

A

1009-0401(2014)03-0052-04

猜你喜歡
方法
中醫(yī)特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數(shù)學(xué)教學(xué)改革的方法
河北畫報(2021年2期)2021-05-25 02:07:46
化學(xué)反應(yīng)多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學(xué)習(xí)方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 亚洲av片在线免费观看| 青青青国产免费线在| 亚洲综合专区| 538精品在线观看| 日韩毛片免费观看| 久久毛片网| 亚洲无码电影| 国产精品尤物铁牛tv| 无码人妻热线精品视频| 色天堂无毒不卡| 精品91视频| 丁香亚洲综合五月天婷婷| 高清久久精品亚洲日韩Av| 婷婷午夜天| 亚洲欧美一区二区三区图片| 国产91精品调教在线播放| 国产91小视频| 国产毛片高清一级国语 | 成人在线观看不卡| 欧美成人看片一区二区三区 | 国产精品香蕉在线观看不卡| 九一九色国产| 免费aa毛片| 欧美α片免费观看| 日本黄色不卡视频| 青草国产在线视频| 小说区 亚洲 自拍 另类| 久久国产精品电影| 欧美一区二区福利视频| 真实国产精品vr专区| 久久人妻xunleige无码| 国产成人啪视频一区二区三区 | 国产精品久久久精品三级| 日韩小视频在线播放| 欧美日韩在线亚洲国产人| 999国内精品久久免费视频| 制服无码网站| 亚洲视频二| 亚洲成a∧人片在线观看无码| 欧美亚洲国产精品第一页| 欧美中文字幕在线视频| 第一区免费在线观看| 国产a v无码专区亚洲av| 国产黄色免费看| 日韩美毛片| 日本人妻一区二区三区不卡影院| 婷婷99视频精品全部在线观看 | 国产成人久久777777| 国产亚卅精品无码| 亚洲小视频网站| 亚洲电影天堂在线国语对白| 久久国产精品电影| 青青草原国产免费av观看| 午夜性刺激在线观看免费| 成人国产免费| 久久精品只有这里有| 国产97公开成人免费视频| 黄色网站不卡无码| 亚洲国产日韩在线成人蜜芽| 久久99精品久久久久纯品| 天天综合天天综合| 伊人网址在线| 久久综合丝袜日本网| 久久精品人妻中文系列| 久久人搡人人玩人妻精品| 亚洲综合狠狠| 久久永久视频| 亚洲综合片| 亚洲成综合人影院在院播放| 亚洲第一成年人网站| 免费一级毛片在线播放傲雪网| 女人爽到高潮免费视频大全| 一本大道香蕉高清久久| 美女被操91视频| 狂欢视频在线观看不卡| 97成人在线观看| 午夜激情福利视频| 精品欧美一区二区三区在线| 日韩国产一区二区三区无码| 精品国产欧美精品v| 天堂岛国av无码免费无禁网站| 欧美人与牲动交a欧美精品|