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