Android游戏开发26:论SurfaceView与GLSurfaceView的效率

       做游戏引擎总是倾向于使用OpenGL,这是为什么呢?本文就简单跟大家分析说明下。

       如今国外游戏基本上质量都很好,不管是从视觉上、操作上还是流畅度上,那么今天我们关注的是流畅度。

       首先有经验的游戏开发者,尤其是一直做2D游戏开发的童鞋门,从J2me到Android,很多做Android的都是从J2me过来的,那么对于J2me-3D开发的基本很少,原因不多说,对于Kjava的机器我也没什么再喷的,反正我是受够折磨了。

       很多开发者对外国的游戏狠感慨,为什么他们做的游戏都是那么流畅,不丢帧,其实很明确的跟大家说,他们的大部分游戏都是基于OpenGL进行的开发,不管是3D还是2D。下面详细说下原因:

       对于刚接触Android游戏开发的来说,首先印在心理的就是利用SurfaceView画布进行游戏开发(除3D游戏外),那么开发过程中,越来越多的开发者都开始对Android的运行内存产生怀疑(Android运行内存相对于Kjava的机器那可是大了很多),因为都开始再次关注内存的使用,动不动就卡,就OOM,~很经典的Error~

       一般2D游戏开发使用SurfaceView足够,因为它也是google专们扩展用于2D游戏开发的画布。但是很早前我做过测试:

       使用普通的游戏画布(Android中2D专用游戏画布)中进行绘制图片,然后在GLSurfaceView(Android中3D游戏专用画布)中渲染图片的对比中发现GLSurfaceView的效率是SurfaceView的30倍~呵呵,高了30倍的效率~这是什么概念,可想而知。GLSurfaceView的效率高主要是因为机器硬件的GPU加速,现在flash技术也有了GPU加速技术。

       下面总结一下:

       一般2D游戏使用SurfaceView足够,毕竟我之前公司做的网游就是用SurfaceView做的,很流畅,所以不要认为什么都要使用GLSurfaceView(OpenGL),而且   GLSurfaceView的弊端在于适配能力差,因为很多机型中是没有GPU加速的。关于GPU童鞋门不知道的自己百度,这里不多说了。

       不管是做什么游戏,对于开发者而言,流畅是最重要的;再好的游戏几帧左右,谁都哭。

       不管使用SurfaceView还是GLSurfaceView,只要内存优化做的好,都基本无差(排除2D\3D游戏差异)。希望不管当前你是否看了此文章想将当前的项目换个GLSurfaceView框架还是如何如何,我都希望你静下心来,好好的优化你的内存先,不要总把问题推到SDK和硬件上,毕竟google提供了那就肯定不会那么低效率的,否则人家也不会闲着没事给你整那么多事情来。

       对于初学者千万不要顾虑这些,对你来说,游戏的思想是最重要的,多做项目才是王道。


android开发学习网 » Android游戏开发26:论SurfaceView与GLSurfaceView的效率