Java:VolatileImage比BuffereImage慢

Java:VolatileImage比BuffereImage慢,java,image,graphics,volatile,Java,Image,Graphics,Volatile,我正在用java和BuffereImage制作一个游戏,将内容呈现到屏幕上。我在游戏应该运行的低端机器上遇到了性能问题,所以我切换到了通常更快的VolatileImage。除了他们实际上减慢了整个过程 这些图像是使用GraphicsConfiguration.CreateCompatibleEvolatileImage(…)创建的,并使用(按照链接查看具体哪一个)绘制到屏幕上。它们是使用双缓冲在画布上绘制的 有人知道这里出了什么问题吗?很可能您的代码混合了加速和非加速操作 这是一本必读的书。第3

我正在用java和BuffereImage制作一个游戏,将内容呈现到屏幕上。我在游戏应该运行的低端机器上遇到了性能问题,所以我切换到了通常更快的VolatileImage。除了他们实际上减慢了整个过程

这些图像是使用GraphicsConfiguration.CreateCompatibleEvolatileImage(…)创建的,并使用(按照链接查看具体哪一个)绘制到屏幕上。它们是使用双缓冲在画布上绘制的


有人知道这里出了什么问题吗?

很可能您的代码混合了加速和非加速操作


这是一本必读的书。第3.2节对于任何使用加速Java图形的人来说尤其重要。

我也注意到了这一点。如果图形卡内存不足,显然没有帮助。IIRC,
BuffereImage
已经有了一些加速,所以差异可能不像以前那么大了。@Norswap:我真的认为找到一个很好的答案在于找到顶级的开源Java游戏(肯定有一些)或一些很好的Java演示(从“演示场景”中),并试着理解他们做了什么。很久以前,我曾在非常奇特的硬件(如Amiga、SNES、mode 13x等)上编写游戏和演示,但我仍然不知道如何在Java中正确地“推送像素”。这又是一个Java被“过度工程化”的领域,而且不必要地复杂。我不会为了能真正帮助你而屏住呼吸。这绝对不是视频内存的问题(我只有700kb的图像可以保存在内存中)。另外,我的一位朋友在自己的游戏中使用VolatileImages(他在同一台计算机上进行了测试),他说我在从BuffereImage切换时看到速度提高了10倍。是否可能缩放图像(在剪辑的意义上,请参见问题中的链接)是这样一种非加速操作?由于我使用精灵表,每次绘制都必须有效地选择图像的一部分绘制到屏幕上。