谁能告诉我 SurfaceView 和 GLSurfaceView 之间的基本区别是什么?什么时候应该使用 SurfaceView,什么时候应该使用 GLSurfaceView?
我在 Stack Overflow 上阅读了一些已经回答的问题,但它们并没有满足我的查询。
任何帮助,将不胜感激。
谁能告诉我 SurfaceView 和 GLSurfaceView 之间的基本区别是什么?什么时候应该使用 SurfaceView,什么时候应该使用 GLSurfaceView?
我在 Stack Overflow 上阅读了一些已经回答的问题,但它们并没有满足我的查询。
任何帮助,将不胜感激。
AGLSurfaceView
是SurfaceView
您可以使用 OpenGL 渲染的。在它们之间进行选择很简单:
GLSurfaceView
.SurfaceView
.OpenGL是低级的。如果您还不熟悉它,这是一项需要学习的任务。如果只需要 2D 绘图,请SurfaceView
使用高级、合理高性能的Canvas。这很容易使用。
除非您有充分的理由使用 a GLSurfaceView
,否则您应该使用常规SurfaceView
。我建议如果你还不知道你需要 GL,那么你可能不需要。
GLSurfaceView 是 3D 应用程序的主要构建块,因为 View 是 2D 应用程序。它不仅广泛用于 3D 游戏,还广泛用于相机等多媒体应用程序中,以创建特殊的预览效果。
GLSurfaceView 扩展了 SurfaceView 并且另外拥有一个渲染线程和一个由客户端设置的渲染对象。渲染线程保持运行,连续或按需运行,并委托给渲染对象以使用 OpenGL API 绘制帧。对于 SurfaceView 和 GLSurfaceView,渲染是在主线程之外的单独线程中执行的。不同之处在于 SurfaceView 的渲染线程是由客户端创建的,而 GLSurfaceView 是由系统创建的。更重要的是,GLSurfaceView 将在内部处理主线程和渲染线程之间的同步。
表面视图
AFAIK Canvas 在 2D 绘图中易于实现且有效,但不支持 3D 绘图
GLSurfaceView
如果你想设计一些 3D 游戏,那么你应该使用 GLSurfaceView 和 OGLES
我的经验是,如果您只想进行 2D 处理,请选择 Canvas,因为与 GLSurfaceView 相比,它更易于实现且更有效。