java - Android:如何提高 SurfaceView 上绘制亮度动画的性能?
问题描述
我在 SurfaceView 中绘制了 36 个游戏单元,然后涉及每个单元上的亮度动画,FPS 显着下降。
当我只绘制单元格时,FPS 是完美的(帧更新约为 16-17 毫秒):
Bitmap cellBitmap = mResources.cellBitmap();
canvas.drawBitmap(cellBitmap, null, cellRect, null);
但是当我添加亮度效果时,FPS 大约是 50 毫秒:
ColorMatrix cm = new ColorMatrix(new float[]
{
1, 0, 0, 0, brightness,
0, 1, 0, 0, brightness,
0, 0, 1, 0, brightness,
0, 0, 0, 1, 0
});
Bitmap cellBitmap = mResources.cellBitmap();
Paint paint = new Paint();
paint.setColorFilter(new ColorMatrixColorFilter(cm));
canvas.drawBitmap(cellBitmap, null, cellRect, paint);
我意识到在每次绘制操作上应用颜色过滤器是一项额外的工作,但我无法避免这种情况并使用以前准备好的图像,因为由于动画的原因,我必须每帧更改亮度值。
有什么办法可以优化吗?我知道很多手机游戏的图形效果越来越困难,并且使用完美的 FPS 并相信我做错了什么