Android:在SurfaceView和OpenGL之间做出决定(GLSurfaceView)

Ric*_*ich 19 android opengl-es

有没有办法在规划阶段根据游戏/应用程序的预期复杂性预先决定是否在SurfaceView中使用常规Canvas绘图或使用OpenGL?

我一直在玩Canvas并且只需要2D移动,而在一部相当新的手机上,我得到了相当不错的性能,其中有一堆原始对象和一些在固定背景屏幕上运行的位图.

可以公平地说,如果我要绘制背景图像并增加移动和绘制对象的数量,我应该直接使用OpenGL吗?

Wro*_*lai 29

我只能说,这取决于你将使用多少精灵.Google的Chris Pruett也很好地记录了这一部分.

Google I/O 2009Google I/O 2010.

下面是他的一张幻灯片中与您的主题相关的图片: 在此输入图像描述

有了这些知识,你应该使用draw_texture扩展来使用OpenGL .请记住查询字符串并检查draw_texture实际设备是否支持.

有关与游戏开发相关的更多信息,请参阅此内容.

  • 但是这张图片没有显示ARM内核与GPU的负载.使用OpenGL进行渲染时,您将负载移至GPU,而ARM内核可用于其他计算任务.我相信Canvas最终会调用Skia,它主要使用ARM循环进行渲染.根据您使用的Android版本,Skia的某些部分似乎是硬件加速的. (3认同)

Vip*_*hit 10

SurfaceView

GLSurfaceView是一个可以使用OpenGL渲染的SurfaceView.在它们之间进行选择很简单:

如果您熟悉OpenGL并需要它提供的内容,请使用GLSurfaceView.否则,请使用SurfaceView.OpenGL是低级的.如果你还不熟悉它,那就是学习的一项任务.如果您只需要2D绘图,SurfaceView将使用高级,合理的高性能Canvas.它很容易使用.

除非您有充分理由使用GLSurfaceView,否则应使用常规SurfaceView.我建议如果你还不知道你需要GL,那么你可能不会.

OpenGL的

OpenGL可以轻松处理旋转和缩放.

老实说,你可能需要学习很多OpenGL才能做到这一点,特别是与以下主题有关:

几何照明(或者只是禁用它)拾取(选择要在其上绘制的几何体)像素映射纹理映射Mipmapping另外,为此学习OpenGL可能有点过分,你必须非常擅长它才能使其高效.

相反,我建议使用构建在openGL之上的游戏库的图形组件,例如:

的Cocos2D

libgdx

这里列出的任何引擎

资源

Android中SurfaceView和GLSurfaceView的区别

Android:Canvas vs OpenGL