Android:决定SurfaceView和OpenGL(GLSurfaceView)
在规划阶段,是否有一种方法可以根据游戏/应用程序的预期复杂性预先决定是在SurfaceView中使用常规画布绘制还是使用OpenGL 我一直在玩画布,只需要2D运动,在一款相当新的手机上,我得到了相当不错的性能,一堆基本对象和一些位图在坚实的背景下在屏幕上运行Android:决定SurfaceView和OpenGL(GLSurfaceView),android,opengl-es,Android,Opengl Es,在规划阶段,是否有一种方法可以根据游戏/应用程序的预期复杂性预先决定是在SurfaceView中使用常规画布绘制还是使用OpenGL 我一直在玩画布,只需要2D运动,在一款相当新的手机上,我得到了相当不错的性能,一堆基本对象和一些位图在坚实的背景下在屏幕上运行 公平地说,如果我要绘制背景图像并增加在其上移动和绘制的对象的数量,我应该直接转到OpenGL吗?我能说的是,这取决于你要使用多少精灵。谷歌的Chris Pruett也很好地记录了这一部分 和 下面是他的一张幻灯片中与您的主题相关的图片:
公平地说,如果我要绘制背景图像并增加在其上移动和绘制的对象的数量,我应该直接转到OpenGL吗?我能说的是,这取决于你要使用多少精灵。谷歌的Chris Pruett也很好地记录了这一部分 和 下面是他的一张幻灯片中与您的主题相关的图片: 有了这些知识,您应该使用OpenGL的
draw\u纹理
扩展。请记住查询字符串并检查实际设备是否支持draw\u texture
有关一般游戏开发的更多信息,请参阅。SurfaceView GLSURFACHEVIEW是可以使用OpenGL渲染为的SURFACHEVIEW。 在两者之间进行选择很简单: 如果您熟悉OpenGL并需要它提供的功能,请使用 gleview。否则,请使用SurfaceView。OpenGL是低级的。如果 你还不熟悉它,这是一项学习的任务。如果 您只需要二维绘图,SurfaceView使用高级、合理的 高性能帆布。这很容易相处 除非您有充分的理由使用GLSURFACHEVIEW,否则您应该使用 定期的表面观察。我建议如果你还不知道 你需要德国劳埃德船级社,那么你可能不需要 OpenGL OpenGL将能够轻松处理旋转和缩放 老实说,要做到这一点,您可能需要学习很多OpenGL, 具体涉及以下主题: 几何体照明(或仅禁用它)拾取(选择几何体 要绘制它)像素贴图纹理贴图Mipmapping也,学习 OpenGL在这方面可能有点过头了,而且你必须非常漂亮 擅长于提高效率 相反,我建议使用游戏的图形组件 在openGL之上构建的库,例如: 来源
但是这张图片没有显示ARM内核与GPU之间的负载。使用OpenGL进行渲染时,将负载移动到GPU,而ARM core可用于其他计算任务。我相信Canvas最终会调用Skia,它主要使用ARM循环进行渲染。基于您正在使用的Android版本,Skia的某些部分似乎是硬件加速的。