SurfaceView和GLSurfaceView
今天在這里大概說(shuō)下現(xiàn)在為什么游戲引擎都趨向與openGL進(jìn)行的,這里大概說(shuō)下;
本文引用地址:http://cafeforensic.com/article/201609/305036.htm當(dāng)今基本所有的國(guó)外游戲都是質(zhì)量很好,不管是從視覺(jué)上還是操作還是流暢度上,那么今天我們關(guān)注的是其流暢度;
首先有經(jīng)驗(yàn)的游戲開(kāi)發(fā)者,尤其是一直做2D游戲開(kāi)發(fā)的童鞋門(mén),從J2me到Android,很多做Android的都是從J2me過(guò)來(lái)的,那么對(duì)于J2me-3D開(kāi)發(fā)的基本很少,原因不多說(shuō),對(duì)于Kjava的機(jī)器我也沒(méi)什么再噴的,反正我是受夠折磨了;
很多開(kāi)發(fā)者對(duì)外國(guó)的游戲狠感慨,為什么他們做的游戲都是那么流暢,不丟幀,其實(shí)狠明確的跟大家說(shuō),他們大部分游戲都是基于openGL進(jìn)行的開(kāi)發(fā),不管是3D還是2D;下面詳細(xì)說(shuō)下原因:
對(duì)于剛接觸Android游戲開(kāi)發(fā)的來(lái)說(shuō),首先印在心理的就是利用SurfaceView畫(huà)布進(jìn)行游戲開(kāi)發(fā)(除3D游戲外),那么開(kāi)發(fā)過(guò)程中,越來(lái)越多的開(kāi)發(fā)者都開(kāi)始對(duì)Android的運(yùn)行內(nèi)存產(chǎn)生懷疑(Android運(yùn)行內(nèi)存相對(duì)于Kjava的機(jī)器那可是大了很多),因?yàn)槎奸_(kāi)始又再次關(guān)注內(nèi)存的使用;動(dòng)不動(dòng)就卡,就OOM,我去~狠經(jīng)典的Error~
一般2D游戲開(kāi)發(fā)使用SurfaceView足夠,因?yàn)樗彩莋oogle專們擴(kuò)展用于2D游戲開(kāi)發(fā)的畫(huà)布;但是很早前我做過(guò)測(cè)試:
使用普通的游戲畫(huà)布(Android中2D專用游戲畫(huà)布)中進(jìn)行繪制圖片,然后在GLSurfaceView(Android中3D游戲?qū)S卯?huà)布)中渲染圖片的對(duì)比中發(fā)現(xiàn)GLSurfaceView的效率高于SurfaceView的30倍~呵呵,高了30倍的效率~這是什么概念,可想而知;GLSurfaceView的效率主要是因?yàn)闄C(jī)器硬件的GPU加速,現(xiàn)在flash技術(shù)也有了GPU加速技術(shù);
下面總結(jié)一下:
一般2D游戲使用SurfaceView足夠,畢竟我之前公司做的網(wǎng)游就是用SurfaceView做的,狠流暢,所以不要認(rèn)為什么都要使用GLSurfaceView(openGL),而且 GLSurfaceView的弊端在于適配能力差,因?yàn)楹芏鄼C(jī)型中是沒(méi)有GPU加速的;關(guān)于GPU童鞋門(mén)不知道的自己百度,這里不多說(shuō)了;
不管是做什么游戲,對(duì)于開(kāi)發(fā)者而言,流暢是最重要的;再好的游戲幾幀左右,誰(shuí)都哭;
不管使用SurfaceView還是GLSurfaceView,只要內(nèi)存優(yōu)化做的好,都基本無(wú)差(排除2D3D游戲差異);希望不管當(dāng)前你是否看了此文章想將當(dāng)前的項(xiàng)目換個(gè)GLSurfaceView框架還是如何如何,我都希望你靜下心來(lái),好好的優(yōu)化你的內(nèi)存先,不要總把問(wèn)題推到SDK和硬件上,畢竟google提供了那就肯定不會(huì)那么不效率的,否則人家也不會(huì)閑著沒(méi)事給你整那么多事情來(lái);
對(duì)于初學(xué)者千萬(wàn)不要顧慮這些,對(duì)你來(lái)說(shuō),游戲的思想是最重要的,多做項(xiàng)目才是王道,否則給再給你個(gè)地球,你都認(rèn)為它2012年也會(huì)爆炸,你懂的~
評(píng)論