我正在制作Java2D游戏,并且尝试对同一图像进行alpha混合,以创建类似于模糊的东西。
使用AlphaComposite的速度确实很慢,并且将平均帧速率从170降低到90,这似乎不成问题(因为大多数游戏运行在60),但是有时帧速率降至低于45(也许是因为我会花更多时间使用我的计算机吗?(不确定),我尝试应用的单个效果似乎很多。
在我的构造函数中,我有
AlphaComposite blurAlpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f);
AlphaComposite opaque = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1);
然后在主循环中: (很明显,g是Graphics2D对象,游戏是游戏的预渲染图像)
g.setComposite(blurAlpha);
g.drawImage(game, -1, 0, null);
g.drawImage(game, 1, 0, null);
g.setComposite(opaque);
起初,我认为帧速率下降是由于两次绘制图像所致,但是当我删除setComposite
行时,帧速率上升到150。