Я программирую приложение для Android. Я использую Canvas, и я рисую Tilemap на нем, используя for-loops и рисуя каждый фрагмент один за другим.Как предварительно отобразить карту плитки для ее перерисовки позже?
Я хочу увеличить производительность, сделав эту перегородку (переднего плана и фона индивидуальной) раз и сохраните ее, чтобы я мог рисовать всю эту карту без петли, бросая каждую отдельную плитку.
Мой Графика Класс выглядит следующим образом:
public class AGraphics implements Graphics {
Bitmap frameBuffer;
Canvas canvas;
Paint paint;
...
public AGraphics(.., Bitmap frameBuffer) {
this.frameBuffer = frameBuffer;
this.canvas = new Canvas(frameBuffer);
this.paint = new Paint();
}
...
public void drawPixmap(...){
canvas.drawBitmap(((AndroidPixmap) pixmap).bitmap, ...);
}
...
}
My World Class вызывает раздаточный Pixmap функции рисовать каждую плитку:
public class World {
...
public void drawForeground (float posX, float posY){
// get Graphics ...
for (int y = 0; y < map.height; y++) {
for (int x = 0; x <map.width; x ++) {
// calculate Positions
g.draw(tileset, (int)posX, (int)posY, srcX, srcY, tilesize, tilesize);
}
}
}
...
}
Теперь я ищу способ, чтобы сохранить холст и перерисовать его каждый GameLoop в разных позициях, чтобы повысить производительность.
Любые идеи или рекомендации? Если вам нужна дополнительная информация, спросите!
Благодаря
К сожалению, теперь у меня проблемы с памятью. Я попробую сделать это с меньшими размерами плиток так, чтобы общий размер изображения был меньше. Тогда я могу растянуть его, чтобы он вписывался в мой холст. (Я использовал 128x128px на Плитку и получил размер карты около 120x70 плит). – Headless
Это ожидается. Вы ограничены в растровой памяти в 2-3 раза больше пикселей на экране – yoah