Estoy tratando de portar un emulador que he escrito en Java para Android. Las cosas han ido bien, pude cambiar la mayoría de mis códigos con pequeños cambios, sin embargo, debido a la forma en que funciona la emulación, necesito renderizar la imagen a nivel de píxel.android rápido acceso y manipulación de píxeles
En cuanto a Java Desktop utilizo
int[] pixelsA = ((DataBufferInt) src.getRaster().getDataBuffer()).getData();
que me permiten obtener la referencia a la memoria intermedia de píxeles y actualizar sobre la marcha (minimizar creaciones de objetos)
Actualmente esto es lo que mi emulador para androide hace para cada trama
@Override
public void onDraw(Canvas canvas)
{
buffer = Bitmap.createBitmap(pixelsA, 256, 192, Bitmap.Config.RGB_565);
canvas.drawBitmap(buffer, 0, 0, null);
}
pixelsA es una int array [], pixelsA contiene todas las informaciones de color, por lo que cada marco que tendrá que crear un objeto de mapa de bits haciendo
buffer = Bitmap.createBitmap(pixelsA, 256, 192, Bitmap.Config.RGB_565);
que creo que es bastante caro y lento.
¿Hay alguna manera de dibujar píxeles de manera eficiente con el lienzo?
Es cierto que CreateBitmap es lento, es la copia de la memoria, e incluso la conversión de formato de píxeles en su caso! –