【发布时间】:2012-06-17 07:02:16
【问题描述】:
谁能告诉我 SurfaceView 和 GLSurfaceView 之间的基本区别是什么?什么时候应该使用 SurfaceView,什么时候应该使用 GLSurfaceView?
我在 Stack Overflow 上阅读了一些已经回答的问题,但它们不能满足我的查询。
任何帮助将不胜感激。
【问题讨论】:
标签: android opengl-es surfaceview
谁能告诉我 SurfaceView 和 GLSurfaceView 之间的基本区别是什么?什么时候应该使用 SurfaceView,什么时候应该使用 GLSurfaceView?
我在 Stack Overflow 上阅读了一些已经回答的问题,但它们不能满足我的查询。
任何帮助将不胜感激。
【问题讨论】:
标签: android opengl-es surfaceview
GLSurfaceView 是一个 SurfaceView,您可以使用 OpenGL 进行渲染。在它们之间进行选择很简单:
GLSurfaceView。SurfaceView。OpenGL 是低级的。如果您还不熟悉它,这是一项需要学习的任务。如果您只需要 2D 绘图,SurfaceView 使用高级、相当高性能的Canvas。使用起来非常简单。
除非您有充分的理由使用GLSurfaceView,否则您应该使用常规SurfaceView。我建议如果你还不知道你需要 GL,那么你可能不需要。
【讨论】:
SurfaceView:developer.android.com/guide/topics/media/…
SurfaceView 一起使用。使用GLSurfaceView 来做这件事并不那么复杂。请参阅Graphics architecture document。
GLSurfaceView 是 3D 应用程序的主要构建块,因为 View 是 2D 应用程序。它不仅广泛用于 3D 游戏,还广泛用于相机等多媒体应用程序中,以创建特殊的预览效果。
GLSurfaceView 扩展了 SurfaceView 并且另外拥有一个渲染线程和一个由客户端设置的渲染对象。渲染线程持续运行或按需运行,并委托给渲染对象以使用 OpenGL API 绘制帧。对于 SurfaceView 和 GLSurfaceView,渲染是在主线程之外的单独线程中执行的。不同之处在于 SurfaceView 的渲染线程是由客户端创建的,而 GLSurfaceView 是由系统创建的。更重要的是,GLSurfaceView 会在内部处理主线程和渲染线程之间的同步。
【讨论】:
SurfaceView
AFAIK Canvas 在 2D 绘图中实现简单且有效,但不支持 3D 绘图
GLSurfaceView
如果你想设计一些 3D 游戏,那么你应该使用 GLSurfaceView 和 OGLES
我的经验是,如果您只想进行 2D 处理,请选择 Canvas,因为与 GLSurfaceView 相比,它更易于实现且更有效。
【讨论】:
SurfaceView 一起使用。使用GLSurfaceView 来做这件事并不那么复杂。请参阅Graphics architecture document。