Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:决定SurfaceView和OpenGL(GLSurfaceView)_Android_Opengl Es - Fatal编程技术网

Android:决定SurfaceView和OpenGL(GLSurfaceView)

Android:决定SurfaceView和OpenGL(GLSurfaceView),android,opengl-es,Android,Opengl Es,在规划阶段,是否有一种方法可以根据游戏/应用程序的预期复杂性预先决定是在SurfaceView中使用常规画布绘制还是使用OpenGL 我一直在玩画布,只需要2D运动,在一款相当新的手机上,我得到了相当不错的性能,一堆基本对象和一些位图在坚实的背景下在屏幕上运行 公平地说,如果我要绘制背景图像并增加在其上移动和绘制的对象的数量,我应该直接转到OpenGL吗?我能说的是,这取决于你要使用多少精灵。谷歌的Chris Pruett也很好地记录了这一部分 和 下面是他的一张幻灯片中与您的主题相关的图片:

在规划阶段,是否有一种方法可以根据游戏/应用程序的预期复杂性预先决定是在SurfaceView中使用常规画布绘制还是使用OpenGL

我一直在玩画布,只需要2D运动,在一款相当新的手机上,我得到了相当不错的性能,一堆基本对象和一些位图在坚实的背景下在屏幕上运行


公平地说,如果我要绘制背景图像并增加在其上移动和绘制的对象的数量,我应该直接转到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的某些部分似乎是硬件加速的。