我正在使用Android API,并着眼于开发2D游戏的长期前景。通常,我可以只使用Canvas来绘制精灵作为我的游戏的图形。我希望能够执行许多视觉效果的绘图,但似乎之前的安卓版本蜂巢(3.0,API level 11) don't support hardware acceleration。
不过,我不确定这到底是什么意思。我不敢相信这幅画是由CPU逐个像素完成的!?!如果我最终有光晕,镜头效果等效果...我会在每个像素上画好几次。我认为一个典型的智能手机CPU不能在大约30 FPS的情况下处理它,这是正确的吗?
我没有奢侈的目标安卓版本的>=3.0,因为他们constitute 8%的已经不是那么大的安卓市场。我是否应该从容不迫地走OpenGL的路(我是OpenGL的初学者)?如果我这样做了,你认为我会通过使用Canvas在自定义的android视图上叠加一个GLSurfaceView来处理效果,否则我会获得什么好处吗?或者,出于任何原因,将两者混合在一起是不是一个坏主意?
发布于 2012-03-06 23:55:11
哦,天啊,是的。特别是如果你的目标是Android3之前的设备,从SurfaceView (通过Canvas.drawXxx()调用)转到OpenGlSurface效果很好。你不仅有更快的每秒帧数(更新),而且内存消耗也好得多。
以下是我注意到的一些要点:
其次,但仍然与此相关,在Android2和更低版本中,跟踪Bitmap实例占用的内存要棘手得多,因为这些意图不会针对Java堆内存进行报告。它们被分配在其他的内存空间中。简而言之,如果你使用OpenGL,另一个麻烦就少了。
有了OpenGL,旋转图像等简单的
实际上,我已经用SurfaceView和Canvas开始了一个类似于星际防御的小游戏,然后因为上面提到的原因迅速切换到了OpenGL。长话短说,游戏现在看起来更好了,虽然它最初在三星TEOS上运行在16 UPS上,在Optimus LG 2x上运行在30 UPS上,但现在在Teos上运行在33 UPS上,在LG 2x上运行在大约80 UPS上。
https://stackoverflow.com/questions/9586924
复制相似问题