如何在帧之间有效地存储VolatileImage的内容?

时间:2013-04-22 03:59:53

标签: java performance java-2d

我正在用Java制作游戏并享受VolatileImage提供的加速。我希望在我的游戏中包含一个效果,让对象在移开后徘徊并在旧位置消失,就像this video中描述的运动模糊模仿一样。该视频涉及的方法涉及将屏幕清除(每帧发生)从不透明变为部分透明。这种方法很完美,但它不适用于VolatileImages,因为它们的内存内容可能随时丢失。

使用VolatileImage。getSnapshot()解决了这个问题,因为您可以在帧丢失时保存帧之间的图像内容。但这意味着每帧都会创建一个新图像,如果我们假设分辨率为1920x1080,那么每帧大约有8 MB的内存分配。我希望通过某种方式将快照写入预先分配的内存或以其他方式实现此效果,以此来解决这个问题。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我通过创建一个像这样的加速BufferedImage解决了我的问题:

private static BufferedImage renderImg = device.getDefaultConfiguration().
        createCompatibleImage(
                    device.getDisplayMode().getWidth(),
                    device.getDisplayMode().getHeight());
static {
    renderImg.setAccelerationPriority(1);
}