?

基于IMx6的opengl圖形著色器開發研究

2020-06-24 03:06燕秀秀
中國新通信 2020年2期
關鍵詞:頂點卡爾變量

燕秀秀

摘要:飛思卡爾的imx6處理器,集成了高達1GHZ的ARM CortexTM-A9內核、2D和3D圖形處理器和3D 1080P視頻處理器,基于imx6的圖形開發研究和設計,能夠實現高速生成畫面,提高圖形顯示質量。本文主要研究了opengl的基于著色器的編程思路和imx6的圖形開發方式,基本完成了基于opengl 2.0的圖形天地球演示畫面。同時由于imx6的高性能和低功耗,可用于將來顯示器的圖形顯示模塊,一定能適應航空電子顯示環境的嚴酷。

關鍵詞:Opengl著色器;imx6

一、第一章

Opengl 是一個跨編程、跨平臺的編程語言,支持生成二維、 三維圖形圖像。Opengl 是與硬件無關的軟件接口,可以運行在 多個平臺上,提供一組功能強大的底層函數調用,實現簡單圖 元到復雜圖像的繪制。Opengl2.0,使用可編程著色器 (programmable shade)的著色語言編寫。著色器是用來渲染圖 像,可以代替固定渲染管線,分為頂點著色器和片段著色器。 其中,頂點著色器,主要進行頂點的相關操作,是描述如何處 理頂點和法線等。片段著色器,是描述如何處理陰影、光線等。

(一)創建著色器

使用頂點著色器或者片段著色器的3個步驟:創建一個著 色器對象glcreateshader();把著色器源代碼變為為目標碼 glcompileshader();驗證著色器已成功編譯glgetshaderir()。其中 如果編譯著色器失敗,可以讀取編譯錯誤日志 glgetshaderinfolog()。

把多個著色器對象鏈接到一個著色器程序中,需要5個步 驟:創建著色器程序glcreatprogram();把適當的著色器對象鏈 接到這個著色器程序中glattachshader();連接著色器程序 gllinkprogram();驗證著色器連接階段已經成功glgetprogramiv(); 使用著色器進行頂點或者片段處理gluseprogram()。

(二)配置頂點數據

在設置完頂點著色器或者片段著色器之后,需要將所要 繪制的圖元頂點配置在對應的著色器中,也就是給著色器提供 數據vec()或mat(),以便后續進行數據處理和應用變換。訪問數 據具體有三種方式,訪問向量或矩陣的元素,訪問矩陣,訪問 結構。其中訪問向量或矩陣中的元素有兩種方式,名稱訪問和 下標訪問。在名稱訪問中,與位置有關的四個成分(x,y,z,w), 與顏色相關的四個成分(r,g,b,a),與紋理坐標相關的四個成 分(s,t,p,q)。下標訪問,通過數組索引進行訪問元素。如圖1 是 opengl的頂點映射在LCD上的坐標系。

(三)類型限定符

統一變量 Uniform,是頂點著色器和片段著色器共享, 必須聲明為全局變量,任何類型的變量,都可以聲明為 uniform 變量,包括數據和結構體,這些值在幾何圖形中可以一直為常 量。屬性 Attribute,是頂點著色器的輸入變量關鍵字,支持數 據更新。Varying,是片段著色器的輸入變量關鍵字。

二、第二章

Imx6 系列處理器有四核imx 6Quad、雙核imx6Dual、單核 imx6Solo 三個子系列。 imx系列處理器支持DDR3、 LV-DDR3、 LPDDR2 等存儲芯片。

本文研究中,使用飛思卡爾的MARS Board,飛思卡爾半 導體公司長久致力于研究工業控制的應用,有著成熟的產品體 系、開發技術支持和哦年工業級芯片的制造能力和經驗,在嵌 入式處理器市場排名很高,其產品具有長期穩定的供貨保證, 工業級產品具有至少10年的供貨保證【1】。最終選擇了飛思卡爾 的imx系列芯片作為軟件開發設計的支撐。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],能夠幫助開發者針對上網本、桌面一體機、高端移動 互聯網設備、高端掌上電腦、高端便攜式媒體播放器、游戲機 和便攜式導航設備等各種不同領域進行開發。

本文使用Linux平臺運行軟件,使用VirtualBox虛擬機來在 windows系統安裝Ubuntu Linux操作系統。

三、第三章

Opengl 提供的圖形設計程序API,在函數命名和函數參數 命名上都能夠做到直觀易懂,便于程序員使用。著色器是opengl 的核心部分,能靈活使用著色器的API函數,是渲染場景的重 要手段。

本文使用硬件的火星開發板,以及基于Linux平臺下的軟件 語言opengl,利用著色器編程思想,成功搭建了航空顯示器中 的天地球畫面的演示,包括航姿數據顯示及航向角的顯示,并 支持二維圖形的顯示和旋轉等。imx6的應用前景十分廣泛,對 imx6的展望,后續可以繼續深入研究使用imx系列的幾何著色 器以及三維顯示和應用。

參考文獻:

[1]高與聰,大連理工大學,基于imx6的車載視頻播放 單元的硬件設計與實現,大連, 2014

[2]Imx 6Dual/6Quad Applications Processors for Industrial Products. http://cache.freescale.com

猜你喜歡
頂點卡爾變量
卡爾幾歲
一場爭奪卡爾的戰爭
“圖形的認識”復習專題
刪繁就簡三秋樹
分離變量法:常見的通性通法
不可忽視變量的離散與連續
數學問答
一個人在頂點
輕松把握變量之間的關系
變中抓“不變量”等7則
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合