Я программирую приложение для Android. Я использую Canvas и рисую на нем Tilemap, используя циклы for и рисуя каждую плитку одну за другой.
Я хочу повысить производительность путем рендеринга этой карты тайлов (отдельно переднего плана и фона) один раз и сохранить ее, чтобы я мог рисовать всю эту карту, не зацикливая каждую плитку.
Мой класс графики выглядит так:
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 вызывает функцию draw 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);
}
}
}
...
}
Теперь я ищу способ сохранить холст и перерисовывать его каждый игровой цикл в разных позициях, чтобы повысить производительность.
Любые идеи или лучшие практики? Если вам нужна дополнительная информация, пожалуйста, спросите!
Спасибо