Android中SurfaceView和GLSurfaceView的区别

And*_*Dev 13 android opengl-es surfaceview

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

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

任何帮助,将不胜感激.

Dar*_*tle 30

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

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

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

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

  • @AndroDev你必须要更加具体.虽然你的意思是:如果你想要从相机中显示实时图像的预览,你只需要一个`SurfaceView`:http://developer.android.com/guide/topics/media/camera.html #定制相机 (2认同)
  • 注意,可以将OpenGL与`SurfaceView`一起使用。使用`GLSurfaceView`来完成它要简单得多。请参阅[图形架构文档](http://source.android.com/devices/graphics/architecture.html#glsurfaceview)。 (2认同)

pie*_*fou 6

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

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

如需更多信息,请查看这个这个


Vip*_*hah 5

SurfaceView

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

GLSurfaceView

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

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