燕秀秀
摘要:飛思卡爾的imx6處理器,集成了高達1GHZ的ARM CortexTM-A9內核、2D和3D圖形處理器和3D 1080P視頻處理器,基于imx6的圖形開發(fā)研究和設計,能夠實現(xiàn)高速生成畫面,提高圖形顯示質量。本文主要研究了opengl的基于著色器的編程思路和imx6的圖形開發(fā)方式,基本完成了基于opengl 2.0的圖形天地球演示畫面。同時由于imx6的高性能和低功耗,可用于將來顯示器的圖形顯示模塊,一定能適應航空電子顯示環(huán)境的嚴酷。
關鍵詞:Opengl著色器;imx6
一、第一章
Opengl 是一個跨編程、跨平臺的編程語言,支持生成二維、 三維圖形圖像。Opengl 是與硬件無關的軟件接口,可以運行在 多個平臺上,提供一組功能強大的底層函數(shù)調用,實現(xiàn)簡單圖 元到復雜圖像的繪制。Opengl2.0,使用可編程著色器 (programmable shade)的著色語言編寫。著色器是用來渲染圖 像,可以代替固定渲染管線,分為頂點著色器和片段著色器。 其中,頂點著色器,主要進行頂點的相關操作,是描述如何處 理頂點和法線等。片段著色器,是描述如何處理陰影、光線等。
(一)創(chuàng)建著色器
使用頂點著色器或者片段著色器的3個步驟:創(chuàng)建一個著 色器對象glcreateshader();把著色器源代碼變?yōu)闉槟繕舜a glcompileshader();驗證著色器已成功編譯glgetshaderir()。其中 如果編譯著色器失敗,可以讀取編譯錯誤日志 glgetshaderinfolog()。
把多個著色器對象鏈接到一個著色器程序中,需要5個步 驟:創(chuàng)建著色器程序glcreatprogram();把適當?shù)闹鲗ο箧?接到這個著色器程序中glattachshader();連接著色器程序 gllinkprogram();驗證著色器連接階段已經成功glgetprogramiv(); 使用著色器進行頂點或者片段處理gluseprogram()。
(二)配置頂點數(shù)據(jù)
在設置完頂點著色器或者片段著色器之后,需要將所要 繪制的圖元頂點配置在對應的著色器中,也就是給著色器提供 數(shù)據(jù)vec()或mat(),以便后續(xù)進行數(shù)據(jù)處理和應用變換。訪問數(shù) 據(jù)具體有三種方式,訪問向量或矩陣的元素,訪問矩陣,訪問 結構。其中訪問向量或矩陣中的元素有兩種方式,名稱訪問和 下標訪問。在名稱訪問中,與位置有關的四個成分(x,y,z,w), 與顏色相關的四個成分(r,g,b,a),與紋理坐標相關的四個成 分(s,t,p,q)。下標訪問,通過數(shù)組索引進行訪問元素。如圖1 是 opengl的頂點映射在LCD上的坐標系。
(三)類型限定符
統(tǒng)一變量 Uniform,是頂點著色器和片段著色器共享, 必須聲明為全局變量,任何類型的變量,都可以聲明為 uniform 變量,包括數(shù)據(jù)和結構體,這些值在幾何圖形中可以一直為常 量。屬性 Attribute,是頂點著色器的輸入變量關鍵字,支持數(shù) 據(jù)更新。Varying,是片段著色器的輸入變量關鍵字。
二、第二章
Imx6 系列處理器有四核imx 6Quad、雙核imx6Dual、單核 imx6Solo 三個子系列。 imx系列處理器支持DDR3、 LV-DDR3、 LPDDR2 等存儲芯片。
本文研究中,使用飛思卡爾的MARS Board,飛思卡爾半 導體公司長久致力于研究工業(yè)控制的應用,有著成熟的產品體 系、開發(fā)技術支持和哦年工業(yè)級芯片的制造能力和經驗,在嵌 入式處理器市場排名很高,其產品具有長期穩(wěn)定的供貨保證, 工業(yè)級產品具有至少10年的供貨保證【1】。最終選擇了飛思卡爾 的imx系列芯片作為軟件開發(fā)設計的支撐。imx 6Dual處理器集 成了高達1GHz的ARM Cortex?-A9 內核、2D和3D圖形處理 器和3D 1080p視頻處理器。MarS Board評估板具有豐富的接口, 包括HDMI接口、LVDS 接口、Mini USB OTG接口、Mini USB Debug接口、RJ45接口、USB Host接口、TF卡接口和LCD顯示 接口[2],能夠幫助開發(fā)者針對上網本、桌面一體機、高端移動 互聯(lián)網設備、高端掌上電腦、高端便攜式媒體播放器、游戲機 和便攜式導航設備等各種不同領域進行開發(fā)。
本文使用Linux平臺運行軟件,使用VirtualBox虛擬機來在 windows系統(tǒng)安裝Ubuntu Linux操作系統(tǒng)。
三、第三章
Opengl 提供的圖形設計程序API,在函數(shù)命名和函數(shù)參數(shù) 命名上都能夠做到直觀易懂,便于程序員使用。著色器是opengl 的核心部分,能靈活使用著色器的API函數(shù),是渲染場景的重 要手段。
本文使用硬件的火星開發(fā)板,以及基于Linux平臺下的軟件 語言opengl,利用著色器編程思想,成功搭建了航空顯示器中 的天地球畫面的演示,包括航姿數(shù)據(jù)顯示及航向角的顯示,并 支持二維圖形的顯示和旋轉等。imx6的應用前景十分廣泛,對 imx6的展望,后續(xù)可以繼續(xù)深入研究使用imx系列的幾何著色 器以及三維顯示和應用。
參考文獻:
[1]高與聰,大連理工大學,基于imx6的車載視頻播放 單元的硬件設計與實現(xiàn),大連, 2014
[2]Imx 6Dual/6Quad Applications Processors for Industrial Products. http://cache.freescale.com