王凌云 吳冬妮
摘 要:隨著信息技術的爆發(fā)式發(fā)展,人們依賴于網絡和手機去實現(xiàn)很多需求。手機游戲作為一種休閑娛樂的方式,已成為一種媒介環(huán)境融入人們日常生活之中。與傳統(tǒng)的PC游戲開發(fā)有較大的不同,手機游戲開發(fā)不僅受到運行環(huán)境的內存、CPU、網絡狀況的影響,還受到精良的游戲畫面與高質量的游戲體驗的影響。OpenGL ES是針對手機和嵌入式設備為目標的高級3D圖形API,創(chuàng)造了軟件與圖形加速間靈活強大的底層交互接口。首先通過對OpenGL ES基本情況進行介紹,對OpenGL ES在游戲開發(fā)中的應用進行闡述,并分析OpenGL ES在游戲開發(fā)中的優(yōu)勢。
關鍵詞: OpenGL ES;游戲開發(fā);手機
中圖分類號:TP37 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2020)28-0241-02
Abstract:With the explosive development of information technology, people rely on the network and mobile phones to achieve many needs. As a way of leisure and entertainment, the mobile game has become a media environment integrated into people's daily life. Different from the traditional PC game development, mobile game development is not only affected by the memory, CPU, and network conditions of the running environment, but also by the excellent game picture and high-quality game experience. OpenGL ES is an advanced 3D graphics API for mobile phones and embedded devices, which creates a flexible and powerful bottom-level interface between software and graphics acceleration. First of all, through the introduction of the basic situation of OpenGL ES, the application of OpenGL ES in game development is described, and the advantages of OpenGL ES in game development are analyzed.
Key words:OpenGL ES;Game development;Mobile phone
1引言
隨著移動互聯(lián)網時代的到來,手機作為最常見的移動終端,有著如圖形圖像處理技術、網絡通信技術等高新技術的投入,成為發(fā)展最快速的移動設備[1-2]。手機自身硬件功能越來越完善,使得手機逐漸成為嵌入式開發(fā)平臺常見選擇之一。手機自身方便攜帶、大屏幕、高分辨率以及網費的低廉等優(yōu)點,滿足游戲應用的需求,游戲已經成為手機必備應用,人們空余時間玩手機游戲已經成為一種潮流,并且對于高質量的游戲需求層出不窮。手機游戲已經發(fā)展成具有很強的娛樂性和交互性的復雜形態(tài)[3-4]。
目前國內常見的移動開發(fā)平臺有iOS、Android,OpenGL ES 是這些移動平臺下的基礎渲染接口之一,游戲界面、輔助功能等都依賴于OpenGL ES驅動硬件來加速渲染。OpenGL ES 作為在移動端上進行圖形圖像處理的OpenGL 三維圖形API的子集接口,去除了在移動端不必存在的特性,開放、跨平臺、功能完善的特性使其在游戲引擎開發(fā),數據可視化,計算機輔助,人工智能以及混合現(xiàn)實等多個領域中受到廣泛的重視,尤其是在游戲場景渲染和三維地形的可視化方面[5]。探究OpenGL ES的技術原理和機制,對于手機游戲設計、引擎開發(fā),優(yōu)化程序設計等具有重要意義。
2 OpenGL ES游戲開發(fā)應用
2.1 著色語言
著色語言是開發(fā)游戲的基礎,是游戲開發(fā)人員的必備編程技能之一。OpenGL ES著色語言基于應用廣泛的C語言,同時具備其他著色語言的特點,易被開發(fā)人員掌握。OpenGL ES提供豐富的數據類型,例如標量、向量、矩形以及采樣器等,各自有特點,其中標量類型只有大小沒有方向,運算遵循簡單的單數法則。向量類型在著色器代碼開發(fā)中十分重要,由多個相同的標量組成,可以方便地存儲以及操作各個組成部分的量值。矩陣運算則實現(xiàn)了場景中圖形的位移、旋轉以及縮放等變換。豐富的數據類型使OpenGL ES在處理圖形圖像方面更加高效,靈活,可以實現(xiàn)高度并行處理,開發(fā)人員可以更加高效率地設計畫面精良的游戲畫面以及炫酷的特效。
2.2 模型渲染
渲染是將幾何數據轉換成屏幕上圖像的過程。OpenGL ES在進行模型渲染時,能夠實現(xiàn)遮擋查詢以及游戲場景或角色的實例化,主要包括數據繪制、光照、紋理映射等方面的內容。當創(chuàng)建游戲場景或角色時,首先需要定義由空間坐標表示的攝像機位置,以及定義觀察的方向,即攝像機的姿態(tài)。這樣游戲場景或角色在進行無論是正交投影、透視投影等變換時,只需要進行投影矩陣計算即可實現(xiàn)游戲場景或角色從空間投影到平面的操作,類似于人眼觀察現(xiàn)實世界,最終得到游戲場景或角色的繪制位置。其次,對于游戲場景或角色的繪制,直接給出顏色的方式得到的立體感和真實感較差,需要增加適當的逼真光照作用。OpenGL ES中的光照模型進行了較大的簡化,分成了環(huán)境光、漫反射光以及鏡面光,一般在頂點著色器中計算光線,得到最終光照強度后,通過管線插值的方式修改每個片元的顏色。通過變換以及光照可以得到相對真實的游戲場景或角色,但是顏色較為單一,因此渲染最后一步需要為其添加紋理,即為游戲場景或角色的每個頂點制定恰當的紋理坐標,通過該坐標在紋理圖中找到相應區(qū)域,并將該區(qū)域的內容映射到相應物體上。在創(chuàng)建復雜的游戲場景或角色時,無法基于數學公式生成,此時可以通過建模工具建立模型,然后導出成指定格式的模型文件在程序中加載渲染,更為方便快捷。
2.3 輔助傳感器應用
與傳統(tǒng)游戲不同,手機游戲角色的運動及方向控制信息并不能通過鼠標和鍵盤輸入,而需要使用其他手段,即借助傳感器來實現(xiàn)[6]。無論是iOS、Android平臺,都支持多種傳感器,主要包括加速度傳感器、磁場傳感器、陀螺儀傳感器以及光傳感器等,其中加速度傳感器是游戲開發(fā)人員使用最多的傳感器之一,很多智能體感游戲都是采用加速度傳感器進行操作的,原理十分簡單,加速度傳感器通過傳遞因手機位置改變的相應數據到相應程序中進行分析、計算得出被操控角色的運動情況,主要用于感知手機的加速度。陀螺儀傳感器主要用于探測手機旋轉的各個角速度,為游戲開發(fā)者提供了較大的創(chuàng)新空間。手機游戲通過陀螺儀傳感器對動作的監(jiān)測實現(xiàn)方向的操作,槍戰(zhàn)類及駕駛類游戲使用居多,可得到更真實的游戲體驗與刺激感。
3 OpenGL ES的特性
OpenGL ES 在游戲開發(fā)方面有著廣泛地應用前景,具有開放性、強移植性以及功能完善等特點[7]。手機的運算極限在于設備的性能,越精良的游戲處理的數據量越大,消耗的資源越多,渲染的效率會影響游戲畫面的效果以及流暢程度,OpenGL ES 規(guī)范定義一個開放式圖形庫接口,使用 GPU 硬件渲染圖形,從而避免了占用CPU帶來的性能高消耗,游戲響應能力更好。OpenGL ES是與硬件無關的軟件接口,支持在不同平臺如iOS、Android以及BlackBerry等平臺上實現(xiàn)渲染,游戲的可移植性好。OpenGL ES發(fā)展至今,已從1.X發(fā)展到了3.X,OpenGL ES 1.X傳統(tǒng)固定的渲染管線在OpenGL ES 2.X中得到了改善,采用的是靈活的可編程渲染管線方式,發(fā)展至今,OpenGL ES 3.X采用陰影貼圖、體渲染、紋理壓縮、以及獨立的著色器對象等技術,重點在于降低能耗的同時改善視覺質量,例如遮擋查詢可以在渲染早期過程中丟棄對完整對象的渲染,給可見對象留出更多的處理時間,增強了移動設備的計算能力,適應了手機設備的計算極限性,同時優(yōu)化了游戲實際的視覺質量。
4結論
文章主要介紹了OpenGL ES開發(fā)游戲相關的知識,對OpenGL ES在游戲開發(fā)中的應用進行了簡介,并分析了優(yōu)缺點,最后得出其開放性、強移植性以及功能完善等特點。游戲開發(fā)人員希望開發(fā)工具容易實現(xiàn)開發(fā)項目管理、多平臺可共享、強移植,OpenGL ES可以很好地滿足開發(fā)人員的需求,并能夠輔助游戲開發(fā)人員設計出外觀更出色、更吸引人的游戲。
參考文獻:
[1] 劉皎.基于Cocos2d-x引擎的麻將游戲設計[J].微型電腦應用,2019,35(12):5-9.
[2] 黎忠文,覃志東,王全宇,等.基于Android平臺手機游戲引擎的設計與實現(xiàn)[J].計算機工程與設計,2014,35(1):119-124.
[3] 馬欣.基于智能手機的游戲軟件技術研究[D].蘇州:蘇州大學,2015.
[4] 曾家鵬.基于Cocos2d-x的消除益智類手機游戲設計與實現(xiàn)[J].軟件導刊,2017,16(10):118-122.
[5] 環(huán)浩.基于OpenGL-ES的iPhone渲染技術研發(fā)與應用[D].上海:上海交通大學,2014.
[6] 田志貢,阮國慶,石峰.手機游戲開發(fā)中Android傳感器的應用研究[J].無線互聯(lián)科技,2015(7):123-124.
[7] 鄒鶴敏.基于OpenGL ES的3D游戲技術的研究與實現(xiàn)[D].成都:西南交通大學,2014.
【通聯(lián)編輯:唐一東】