2012-06-14 31 views
10

¿Alguien me puede decir cuál es la diferencia básica entre SurfaceView y GLSurfaceView. ¿Cuándo usar SurfaceView y cuándo usar GLSurfaceView?Diferencia entre SurfaceView y GLSurfaceView en Android

He leído algunas de las preguntas ya respondidas en stackoverflow pero no satisfizo mis consultas.

Cualquier ayuda sería apreciada.

+0

echar un vistazo a este enlace: http://pierrchen.blogspot.jp/2014/04/android-ui-internal-glsurfaceview.html – pierrotlefou

Respuesta

24

A GLSurfaceView es un SurfaceView que puede procesar con OpenGL. Elegir entre ellos es simple:

  • Si está familiarizado con OpenGL y necesita lo que proporciona, use un GLSurfaceView.
  • De lo contrario, utilice un SurfaceView.

OpenGL es de bajo nivel. Si aún no estás familiarizado con él, es una tarea para aprender. Si solo necesita el dibujo 2D, SurfaceView utiliza el alto nivel, razonablemente alto rendimiento Canvas. Es muy fácil trabajar con.

A menos que tenga un buen motivo para usar un GLSurfaceView, debe usar un SurfaceView normal. Sugeriría que si aún no sabe que necesita GL, entonces probablemente no lo haga.

+0

Gracias por la respuesta. Tengo una pregunta ... para la cámara, ¿cuál sería mejor? – AndroDev

+2

@AndroDev Vas a tener que ser mucho más específico. Aunque da un vistazo a lo que quieres decir: si quieres mostrar una vista previa de imágenes en vivo desde la cámara, solo necesitas un 'SurfaceView': http://developer.android.com/guide/topics/media/camera.html # custom-camera –

+1

Tenga en cuenta que es posible usar OpenGL con un 'SurfaceView'. Es simplemente menos complicado hacerlo con un 'GLSurfaceView'. Consulte el [documento de arquitectura de gráficos] (http://source.android.com/devices/graphics/architecture.html#glsurfaceview). – Lii

5

SurfaceView

yo sepa Canvas es simple de implementar y eficaz en 2D dibujo, pero el dibujo en 3D no son compatibles en él

GLSurfaceView

Si desea diseñar un juego en 3D a continuación, Usted dice que vaya con GLSurfaceView y OGLES

¿Cuál es mi experiencia si solo quiere hacer 2D processi? Luego, seleccione Canvas porque es más fácil de implementar y efectivo que GLSurfaceView.

+0

En caso de de Procesamiento 2D, ¿por qué Canvas es efectivo? – AndroDev

+0

Tenga en cuenta que es posible usar OpenGL con un 'SurfaceView'. Es simplemente menos complicado hacerlo con un 'GLSurfaceView'. Consulte el [documento de arquitectura de gráficos] (http://source.android.com/devices/graphics/architecture.html#glsurfaceview). – Lii

6

GLSurfaceView es el elemento básico principal para las aplicaciones 3D ya que View es para aplicaciones 2D. Es ampliamente utilizado no solo en juegos 3D, sino también en aplicaciones multimedia como la cámara para crear un efecto de vista previa especial.

GLSurfaceView extiende SurfaceView y además posee un hilo de renderizado y un objeto de renderizado establecido por el cliente. El subproceso de representación se ejecuta continuamente, a petición o bajo demanda, y delega en el objeto de representación para dibujar el marco utilizando la API de OpenGL. Tanto para SurfaceView como para GLSurfaceView, la representación se realiza en un hilo separado que no sea el hilo principal. La diferencia es con SurfaceView, el hilo de representación es creado por el cliente, mientras que con GLSurfaceView es creado por el sistema. Además, GLSurfaceView gestionará internamente la sincronización entre el hilo principal y el hilo de renderizado.

Para más información, echa un vistazo a this y this

Cuestiones relacionadas