Я пытаюсь портировать эмулятор, который я написал в Java для Android.Дела шли хорошо, я смог портировать большинство своих кодов с небольшими изменениями, однако из-за того, как работает эмуляция, мне нужно рендерить изображение на уровне пикселей.
Что касается настольного Java, я использую
int[] pixelsA = ((DataBufferInt) src.getRaster().getDataBuffer()).getData();
, которые позволяют мне получить ссылку на пиксельный буфер и обновлять его на лету (минимизировать создание объектов)
В настоящее время это то, что мой эмулятор для Android делает для каждого кадра
@Override
public void onDraw(Canvas canvas)
{
buffer = Bitmap.createBitmap(pixelsA, 256, 192, Bitmap.Config.RGB_565);
canvas.drawBitmap(buffer, 0, 0, null);
}
пикселейA - это массив int [], пиксели А содержат всю информацию о цвете, поэтому каждый кадр должен создавать растровый объект, выполняя
buffer = Bitmap.createBitmap(pixelsA, 256, 192, Bitmap.Config.RGB_565);
, что, на мой взгляд, довольно дорого и медленно.
Есть ли способ эффективно рисовать пиксели с помощью canvas?