![]() |
|
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
Flip horizontal en canvas
Buenas, soy Cerb ;D Estoy portando un juego de windows phone a android y he tenido unos problemas. En windows phone funcionaba perfectamente pero en android baja el framerate un huevo.
Es un juego de lucha y tengo que reflejar respecto del plano Y el personaje de la derecha. Las animaciones son imagenes 3D prerenderizadas que tienen que flipearse en cada iteracion. Ahi es donde peta. He probado a flipear el canvas entero (multiplicacion por -1, 1), luego pintar normal y luego restaurarlo, suena rebuscado pero es lo que suelen proponer. Tambien he probado a crear un bitmap nuevo en cada iteracion que se escale por -1, 1, pero solo el bitmap, y luego se pinte en el canvas, esto parece que va un poco peor. Tambien he probado a almacenar las imagenes al principio, en vez de flipearlas en tiempo real. Al principio del juego cargo todas las animaciones asociadas a los personajes seleccionados, las flipeo y las meto en un array de bitmaps, pero cuando llego a la imagen numero 70 dice que ya no tiene mas memoria.. cuando es realmente solo 1162k... si, 1 mega. Me han dicho que es porque este flip lo hace la cpu, y que con opengl usaria la gpu. Pero como hago que el flip se haga usando al gpu? si llamo a Bitmap.createScaledBitmap y luego lo renderizo con opengl no ganara nada de velocidad, porque la propia multiplicacion del bitmap es la que se hace en cpu, independientemente de que despues vaya a canvas o a opengl (o eso creo yo). A alguien le ha pasado algo asi? que puedo hacer para que vaya fluido? Gracias |
|
#2
|
||||
|
||||
La librería Bitmap en Android, además de ser la culpable del 99% de los Memory Leak y FCs, es LEEEEEEENTA de cojones.
Por lo que estoy viendo al final vas a tener que ir a morir a NDK, tanto por el tema de memoria como por el tema de velocidad. |
#3
|
||||
|
||||
Y se supone que es normal que la gente tenga que hacerse sus arreglos porque las librerias oficiales son una castaña? Siento que soy el unico que tiene este problema :S
De todas formas cuando pueda intentare cargar la textura del resource a opengl sin pasar por bitmap (usando una libreria 3D) y lo cargare sobre un plano flipeado, desflipeare despues para dejarlo igual. Igual que hacia con el canvas ^^ Lo probe ayer en windows phone y va infinitamente mejor que en android, incluso pintando solo animaciones sin flipear... |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 19:04:04 (GMT +2)
HTCMania: líderes desde el 2007