【发布时间】:2019-02-23 11:06:05
【问题描述】:
我正在尝试制作一个游戏,其中行星将位于用户屏幕的中心并且像行星一样非常缓慢地旋转。所以首先我决定测试它是否一切正常,但它没有......我得到一个像这样的简单“行星”图像:
Bitmap image = BitmapFactory.decodeResource(getResources(),R.mipmap.totone);
我还有一个存储角度的变量。然后在绘图功能中,我只需旋转画布,绘制我的星球(现在已旋转),然后将画布旋转回来。像这样:
//the planet's image is 512x512px
canvas.rotate(ang,256,256); //256, 256 is the center of rotation
canvas.drawBitmap(image, 0,0, null);
canvas.rotate(-ang,256,256); //rotate back
我不知道为什么,但看起来当图像旋转 90 度和 270 度时,游戏 fps 会变慢一点?我做了一个小 gif 来展示这个问题。 fps 一直是 60,但是它会无缘无故地下降到 50ish 几毫秒?这是什么原因造成的?我尝试将线程的目标 fps 更改为 30,然后看起来没有发生 fps 下降。所以这可能是性能问题。请注意,我尝试使用任何不同的方法旋转位图,fps 下降效果仍然相同..
【问题讨论】:
-
试过
canvas.concat(matrix)后跟canvas.drawBitmap(image, 0, 0, null)?或直接:canvas.drawBitmap(image, matrix, null)? -
@pskink 是的,可悲的是同样的事情:/
标签: java android bitmap rotation frame-rate