在主游戏循环中旋转位图而不在 Android 中重载 GC

Rotating bitmap in main game loop without overloading GC in Android

在主游戏循环中每帧旋转位图的正确方法是什么? 我尝试过的:

我每帧都创建了旋转位图:

Bitmap image, tmp;
Matrix m;
...
public void mainGameLoop(Canvas c){
    m.reset();
    m.postRotate(angle);
    tmp = Bitmap.createBitmap(image, 0, 0, width, height, m, true);
    c.drawBitmap(tmp, 50, 50, null);
}

但是,由于Bitmap.createBitmap每帧创建位图垃圾收集器工作得如此疯狂,导致低帧率。

我试过将所有角度的位图保存在数组中,然后只取我想要的位图。但是,这需要大量 RAM,而且应用无法在高屏幕分辨率下启动。

如果您有什么想法,请在下方留言。

有些人是这样想的:

Bitmap image;
Matrix m;
.
.
.
public YourClass(){
    m = new Matrix();
    image = Bitmap.createBitmap(image, 0, 0, width, height,);
}
.
.
.
public void mainGameLoop(Canvas c){
    m.setRotate(angle, imageCenterX, imageCenterY);
    yourCanvas.drawBitmap(image, m, null);
}