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