在规划阶段,是否有一种方法可以根据游戏/应用程序的预期复杂度来决定是使用SurfaceView中的常规Canvas绘图还是使用OpenGL?
我一直在尝试使用Canvas进行2D移动,而且在一部相当新的手机上,我在一个纯色背景上运行一堆基本对象和几个位图,屏幕上运行得非常流畅。
如果我要绘制背景图像并增加正在移动并在其上绘制的对象数量,那么直接使用OpenGL是否更好呢?
draw_texture
扩展。请记住查询字符串并检查实际设备是否支持draw_texture
。SurfaceView(视图表面)
GLSurfaceView是一个可以使用OpenGL进行渲染的SurfaceView。 在选择它们之间时很简单:
如果你熟悉OpenGL并需要它提供的功能,请使用GLSurfaceView。否则,请使用SurfaceView。OpenGL是低级别的。如果您还不熟悉它,则需要学习。如果您只需要2D绘图,则SurfaceView使用高级,相当高性能的Canvas。非常容易使用。
除非您有充分的理由使用GLSurfaceView,否则应该使用普通的SurfaceView。如果您还不知道是否需要GL,则建议您使用普通SurfaceView。
OpenGL
OpenGL能够轻松处理旋转和缩放。
老实说,您可能需要学习许多与以下主题相关的OpenGL内容:
几何图形、光照(或仅禁用它)、拾取(选择要在其上绘制的图形)、像素映射、纹理映射、Mipmapping。另外,为此学习OpenGL可能过度了,而且您必须非常擅长才能使其高效。
相反,我建议使用构建在OpenGL之上的游戏库的图形组件,例如:
来源