19

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

我在 Stack Overflow 上阅读了一些已经回答的问题,但它们并没有满足我的查询。

任何帮助,将不胜感激。

4

3 回答 3

35

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

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

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

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

于 2012-06-14T10:06:00.410 回答
14

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

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

有关更多信息,请查看

于 2014-04-10T13:31:36.960 回答
5

表面视图

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

GLSurfaceView

如果你想设计一些 3D 游戏,那么你应该使用 GLSurfaceView 和 OGLES

我的经验是,如果您只想进行 2D 处理,请选择 Canvas,因为与 GLSurfaceView 相比,它更易于实现且更有效。

于 2012-06-14T09:10:22.760 回答