有谁能告诉我SurfaceView和GLSurfaceView之间的基本区别是什么?什么情况下应该使用SurfaceView,什么情况下应该使用GLSurfaceView?
我在Stack Overflow上阅读了一些已经回答的问题,但它们没有满足我的疑问。
任何帮助都将不胜感激。
有谁能告诉我SurfaceView和GLSurfaceView之间的基本区别是什么?什么情况下应该使用SurfaceView,什么情况下应该使用GLSurfaceView?
我在Stack Overflow上阅读了一些已经回答的问题,但它们没有满足我的疑问。
任何帮助都将不胜感激。
GLSurfaceView
是一个可以使用OpenGL进行渲染的SurfaceView
。如何选择它们很简单:
GLSurfaceView
。SurfaceView
。OpenGL是底层的,如果您不熟悉它,学习它会是一项任务。如果您只需要2D绘图,则SurfaceView
使用高级别、性能相对较高的Canvas。 它非常易于使用。
除非您有充分的理由使用GLSurfaceView
,否则应该使用普通的SurfaceView
。我建议如果您不知道自己是否需要GL,则可能不需要。
SurfaceView
:http://developer.android.com/guide/topics/media/camera.html#custom-camera - Darshan Rivka WhittleGLSurfaceView是3D应用程序的主要构建模块,就像View是2D应用程序的一样。它不仅广泛用于3D游戏中,还用于多媒体应用程序(如相机)以创建特殊的预览效果。
GLSurfaceView扩展自SurfaceView,并附带由客户端设置的渲染线程和渲染对象。渲染线程持续运行,连续或按需运行,并委托给渲染对象使用OpenGL API绘制帧。对于SurfaceView和GLSurfaceView,渲染都在与主线程不同的单独线程中执行。区别在于,SurfaceView的渲染线程由客户端创建,而GLSurfaceView的渲染线程由系统创建。此外,GLSurfaceView将在内部处理主线程和渲染线程之间的同步。
SurfaceView
据我所知,Canvas 在 2D 绘图方面实现简单且有效,但不支持 3D 绘图。
GLSurfaceView
如果你想设计一些 3D 游戏,那么你应该选择 GLSurfaceView 和 OGLES。
从我的经验来看,如果你只是想进行 2D 处理,那么选择 Canvas 更容易实现并且比 GLSurfaceView 更有效。