基于可編程渲染管線(xiàn)的雷達圖像分層模型設計與實(shí)現
4 余輝效果與渲染到紋理
在繪制余輝效果圖層時(shí),采用渲染到紋理技術(shù)(RTT),將紋理設置成渲染目標,用D3D繪圖函數直接在紋理上繪圖,形成顏色漸變且動(dòng)態(tài)變化的余輝效果。要實(shí)現渲染到紋理,在創(chuàng )建紋理時(shí),用參數D3DUSAGE RENDERTARGET指定紋理的用途,并調用GetSurfaceLevel()方法獲取紋理的表面接口指針。在渲染時(shí),用SetRenderTarget()方法將該表面設置成渲染目標。
為了繪制出圖4中的余輝效果紋理,可用N條射線(xiàn)來(lái)組成余輝效果紋理中的圓,N等于天線(xiàn)方位刻線(xiàn)的數量,每條射線(xiàn)的顏色由其端點(diǎn)顏色決定。N條射線(xiàn)需要用2N個(gè)頂點(diǎn)來(lái)描述,頂點(diǎn)除含有坐標外,還包括顏色值。創(chuàng )建了這些頂點(diǎn)后,Direct3D在渲染管線(xiàn)中自動(dòng)將其繪制成圖像。
要形成隨時(shí)間變化的動(dòng)態(tài)效果,模擬程序需要在幀間隔內根據頂點(diǎn)坐標和當前掃描線(xiàn)的位置,重新設置每個(gè)頂點(diǎn)的顏色。Direct3D重新渲染便產(chǎn)生了亮度漸變且動(dòng)態(tài)變化的圓。
采用這種方法,幀間隔內CPU僅需要存取2N個(gè)頂點(diǎn)的顏色。在前面的例子中,雷達掃描一周形成4 096個(gè)方位,需要繪制4 096條射線(xiàn),即設置8 192個(gè)頂點(diǎn)顏色。在大幅減少了像素存取次數的情況下,增加的這部分頂點(diǎn)顏色存取時(shí)間并不會(huì )影響整體性能的改善。
5 ARPA符號繪制與GDI繪圖
ARPA信息與符號的繪制不隨掃描變化,而與雷達信息處理機的狀態(tài)有關(guān),即由描述雷達信息處理機的狀態(tài)數據表以及點(diǎn)目標跟蹤表等數據表生成,比較適合用GDI函數繪制。為了能夠在紋理上采用GDI函數繪圖,需要獲取紋理的表面(Surface)接口指針,然后利用表面的GetDC()方法得到該表面設備上下文(DC)。這樣就可以調用win32的GDI函數進(jìn)行符號文字等輸出了。由于這部分繪圖代碼內容少且更新率低,因此其CPU占用率幾乎可以不計。
6 結 語(yǔ)
在某型艦載導航搜索雷達中,采用上述方法對雷達模擬器的顯示部分進(jìn)行了改進(jìn)。模擬器的計算機平臺配置為:PentiumXXXXXXXXXⅣ2.8 GHz,ASUS Extreme AX550顯卡。模擬程序運行的幀速率從15 f/s提高到50 f/s以上,效果明顯。結果表明,采用可編程渲染管線(xiàn)技術(shù),可以實(shí)現回波圖像更新與余輝效果計算的分離,充分發(fā)揮顯卡的渲染能力,能夠滿(mǎn)足大分辨率雷達顯示系統仿真的需求。
實(shí)際上,雷達顯示器余輝效果紋理的繪制基本上獨立于雷達的脈沖數據處理等過(guò)程,如果能夠把描述余輝效果的4 096個(gè)亮度數值完全置于可編程渲染管線(xiàn)的頂點(diǎn)著(zhù)色器中,由頂點(diǎn)著(zhù)色器來(lái)完成亮度衰減及更新計算,將進(jìn)一步降低CPU的計算負擔。但由于余輝仿真是一個(gè)迭代過(guò)程,當前幀亮度是前一幀亮度的衰減,這需要對每次迭代后的結果進(jìn)行保存。然而在目前的Direct3D版本中,還不支持渲染到頂點(diǎn)(RTV),頂點(diǎn)著(zhù)色器也難以支持大容量的數組變量,迭代運算的結果難以保存。目前,模擬余輝效果頂點(diǎn)顏色動(dòng)畫(huà)仍然由CPU來(lái)完成。隨著(zhù)顯卡技術(shù)和Direct3D技術(shù)的發(fā)展,這部分代碼還能得到進(jìn)一步的優(yōu)化。
評論