这个问题不适用于LWJGL、JavaFX等库。这里的目标是确定如何从Java2D中获得最佳性能。更特别的是,如何从Java2D中获得最佳性能,以创建视觉上有吸引力但高效的2D游戏。我遇到了很多实践:直接绘制到JFrame上,覆盖JPanel或JComponent,覆盖Canvas以提供一些不错的双缓冲策略,使用库(ehm)等。
在过去,我只是简单地重写了JPanel及其paintComponent方法,最终,它以稳定的35 FPS运行!对于一个简单的自上而下的2D Java游戏来说,这并不是真正的性能巅峰(或者可能是?)。
那么,让Java2D的每一个性能下降的最佳策略是什么
如果您想使用Java的Graphics2D
类来绘制性能良好的对象,我建议您使用VolatileImage。它从Java 1.4开始就可用了,并使用硬件加速处理(如果可能的话)来渲染它的内容。它扩展了java.awt.Image
,所以如果您以前使用过BufferedImage
左右,就不会有太多变化。但是使用这个类有一些棘手的问题。例如,在您呈现其内容之前,您需要检查它是否仍然有效,但通常管理这些内容并不那么困难。但因此,您的应用程序的性能得到了很好的提升,而无需更改大量代码。:)
这个链接应该会给你使用这个类的好建议。