Android 硬件加速预蜂窝

Android 硬件加速预蜂窝,android,opengl-es,2d,hardware-acceleration,Android,Opengl Es,2d,Hardware Acceleration,我正在使用安卓API开发一款2D游戏。通常,我可以使用画布绘制精灵作为游戏的图形。我希望能够进行大量的视觉效果绘制,但似乎在Honeycomb(3.0,API级别11)之前的Android版本 但我不确定这到底意味着什么。我无法说服自己相信绘图是由CPU完成的,逐像素!?!如果我最终有像辉光,镜头效果等效果。。。我会在每个像素上画好几次。我认为一个典型的智能手机CPU不能以每秒30帧的速度处理这个问题,这是对的吗 我没有足够的时间瞄准Android版本>=3.0,因为它们是已经不太大的Andro

我正在使用安卓API开发一款2D游戏。通常,我可以使用
画布
绘制精灵作为游戏的图形。我希望能够进行大量的视觉效果绘制,但似乎在Honeycomb(3.0,API级别11)之前的Android版本

但我不确定这到底意味着什么。我无法说服自己相信绘图是由CPU完成的,逐像素!?!如果我最终有像辉光,镜头效果等效果。。。我会在每个像素上画好几次。我认为一个典型的智能手机CPU不能以每秒30帧的速度处理这个问题,这是对的吗


我没有足够的时间瞄准Android版本>=3.0,因为它们是已经不太大的Android市场的一部分。我应该花点时间走OpenGL的路吗(我是OpenGL的初学者)?如果我这样做,你认为我会通过使用
Canvas
在自定义android视图的顶部覆盖一个GLSURFACHEVIEW来获得任何东西吗。还是出于某种原因,把这两者混为一谈是个坏主意?

哦,天哪,是的。e特别是如果您针对的是Android 3之前的设备,那么从SurfaceView(使用Canvas.drawXxx()调用)到OpenGlSurface非常有用。不仅每秒帧数(更新)更快,而且内存消耗也更好

以下是我注意到的一些要点:

  • 如果您想制作(多)精灵动画,使用作为OpenGL纹理加载并显示在OpenGL四边形上的图像来制作这些动画可以为您提供更多的内存空间。这是因为,虽然常规位图对象受Android每进程内存限制的限制(根据设备和Android版本的不同,大约为16-48 Mb),但从这些图像创建OpenGL纹理(并在之后清除IAMGE)没有此限制。您仅受设备上的总内存限制,该内存远远超过16-48兆
其次,但仍然与此相关,使用Android2及以下版本跟踪位图实例占用的内存要复杂得多,因为这些内存不是针对Java堆内存报告的。它们被分配到其他一些内存空间中。简言之,如果使用OpenGL,另一个麻烦就少了

  • 使用OpenGL,旋转图像等简单动画变得轻而易举。您只需对四边形进行纹理处理,然后按任意方式漫游即可。与精灵动画等效的是顺序显示图像的不同(旋转版本)。这对内存消耗和速度都有好处

  • 若你们正在做一个类似2D的游戏,使用OpenGL的正交投影不仅简化了常规OpenGL透视投影带来的很多麻烦(在这种情况下是无用的),但它实际上缓解了常规SurfaceView在需要缩放所有图形元素时遇到的许多问题,以便它们在不同的屏幕分辨率/比例下看起来大小相同。使用OpenGL的正交投影,您可以有效地创建所需宽度和高度的固定区域,然后让OpenGL将其自动投影到设备屏幕区域

  • 不用说,使用OpenGL制作简单的效果(例如影响某些图形元素的脉动灯光)比使用SurfaceView和sprites烘焙来模拟要容易得多(在OpenGL中,您只需使灯光脉动,然后所有东西都相应地点亮)


实际上,我已经用SurfaceView和Canvas启动了一个类似asteriod防御的小游戏,然后出于上述原因迅速切换到OpenGL。长话短说,这款游戏现在看起来更好了,虽然它最初在三星TEOS上运行16个UPS,在Optimus LG 2x上运行30个UPS,但现在在TEOS上运行33个UPS,在LG 2x上运行80个UPS。

哦,天哪,是的。e特别是如果您针对的是Android 3之前的设备,那么从SurfaceView(使用Canvas.drawXxx()调用)到OpenGlSurface非常有用。不仅每秒帧数(更新)更快,而且内存消耗也更好

以下是我注意到的一些要点:

  • 如果您想制作(多)精灵动画,使用作为OpenGL纹理加载并显示在OpenGL四边形上的图像来制作这些动画可以为您提供更多的内存空间。这是因为,虽然常规位图对象受Android每进程内存限制的限制(根据设备和Android版本的不同,大约为16-48 Mb),但从这些图像创建OpenGL纹理(并在之后清除IAMGE)没有此限制。您仅受设备上的总内存限制,该内存远远超过16-48兆
其次,但仍然与此相关,使用Android2及以下版本跟踪位图实例占用的内存要复杂得多,因为这些内存不是针对Java堆内存报告的。它们被分配到其他一些内存空间中。简言之,如果使用OpenGL,另一个麻烦就少了

  • 使用OpenGL,旋转图像等简单动画变得轻而易举。您只需对四边形进行纹理处理,然后按任意方式漫游即可。与精灵动画等效的是顺序显示图像的不同(旋转版本)。这对内存消耗和速度都有好处

  • 若你们正在做一个类似2D的游戏,使用OpenGL的正交投影不仅简化了常规OpenGL透视投影带来的很多麻烦(在这种情况下是无用的),但它实际上缓解了常规SurfaceView在需要缩放所有图形元素时遇到的许多问题,以便它们在不同的屏幕分辨率/比例下看起来大小相同。使用OpenGL的正交投影,您可以有效地创建所需宽度和高度的固定区域,然后让OpenGL将其自动投影到设备屏幕区域

  • 不用说,制作简单的效果是成功的