Android中SurfaceView和GLSurfaceView的区别

时间:2012-06-14 08:59:25

标签: android opengl-es surfaceview

谁能告诉我SurfaceView和GLSurfaceView之间的基本区别是什么?我何时应该使用SurfaceView,何时应该使用GLSurfaceView?

我在Stack Overflow上阅读了一些已经回答的问题,但是它们不能满足我的疑问。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:28)

GLSurfaceViewSurfaceView,您可以使用OpenGL进行渲染。在它们之间进行选择很简单:

  • 如果您熟悉OpenGL并需要它提供的内容,请使用GLSurfaceView
  • 否则,请使用SurfaceView

OpenGL是低级别的。如果你还不熟悉它,那就是学习的一项任务。如果您只需要2D绘图,SurfaceView会使用高级,合理的高性能Canvas。这很容易使用。

除非您有充分理由使用GLSurfaceView,否则您应该使用常规SurfaceView。我建议如果你还不知道你需要GL,那么你可能不会。

答案 1 :(得分:6)

GLSurfaceView是3D应用程序的主要构建块,因为View适用于2D应用程序。它不仅广泛应用于3D游戏,还广泛应用于摄像机等多媒体应用,以创造特殊的预览效果。

GLSurfaceView扩展了SurfaceView,另外还拥有一个渲染线程和一个由客户端设置的渲染对象。渲染线程持续或按需运行,并委托渲染对象使用OpenGL API绘制帧。对于SurfaceView和GLSurfaceView,渲染在主线程以外的单独线程中执行。不同之处在于SurfaceView渲染线程由客户端创建,而GLSurfaceView则由系统创建。而且,GLSurfaceView将在内部处理主线程和渲染线程之间的同步。

有关详情,请查看thisthis

答案 2 :(得分:5)

<强> SurfaceView

AFAIK Canvas在2D绘图中易于实现和有效,但不支持3D绘图

<强> GLSurfaceView

如果你想设计一些3D游戏,你可以选择使用GLSurfaceView和OGLES

我的经验是,如果您只是想进行2D处理,那么选择Canvas,因为它比GLSurfaceView更容易实现和有效。