2010-08-02 24 views
11

Actualmente estoy jugando con gráficos 2D en Android y he estado usando un viejo SurfaceView para dibujar Drawables y Bitmaps en la pantalla. Esto ha funcionado bien, pero hay un poco de tartamudeo en el movimiento de los sprites, y me pregunto si es factible hacer un juego en tiempo real (pero no terriblemente rápido) con esto.Diferencias y ventajas de SurfaceView vs GLSurfaceView en Android?

Sé que existe GLSurfaceView que utiliza OpenGL, pero tengo curiosidad en cuanto a la medida en que esto hace la diferencia. ¿Se aceleró un hardware plano de SurfaceView o necesito usar OpenGL? ¿Qué tipo de diferencia de velocidad podría esperar al cambiar a OpenGL, y qué tanta alteración de código necesitaría para cambiar (la lógica del juego está en un objeto separado que proporciona una matriz ordenada de elementos extraíbles a SurfaceView)?

Respuesta

2

Por lo que puedo decir, tiene que usar OpenGL para obtener la aceleración de HW. Pero no lo tomes es por sentado y espera por otras respuestas ^^

Si realmente es el caso, la aceleración debería ser bastante importante. Cualquier aplicación 2D debería funcionar al menos a 20 fps (generalmente menos polígonos que las aplicaciones 3D)

tomaría una cantidad sustancial de código, pero 1) como primer intento, podría intentar con solo 1 cuadrado VBO y cambiar la matriz cada vez y 2) su representación parece ya bastante encapsulada, por lo que debería simplificar mucho las cosas.

+1

Sí. GLSurfaceView tiene HW acelerado, mientras que SurfaceView no es (como Android 4.3). – pierrotlefou

0

SurfaceView no está acelerado por hardware de manera predeterminada. si desea obtener la aceleración HW use GLSurfaceView, que usa OpenGL y está acelerado por hardware.

-1

La aceleración de hardware es posible para un SurfaceView normal desde 3.0.

http://developer.android.com/guide/topics/graphics/hardware-accel.html

+0

Esto está mal. "A partir de Android 3.0 (API de nivel 11), la canalización de renderizado 2D de Android admite la aceleración de hardware, lo que significa que todas las operaciones de dibujo que se realizan en el lienzo de una vista utilizan la GPU". Sí, pero NO para un SurfaceView. –

+0

Excepto API23 + donde existe este nuevo método: https://developer.android.com/reference/android/view/Surface.html#lockHardwareCanvas() –

Cuestiones relacionadas