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