我正在开发Java 2D视频游戏,并在Mac OS X 10.10.1上进行开发。我试图使用Java 2D api完成所有这些,并避免使用第三方库。我似乎有显示更新问题,有时事情会更快地更新,然后有时事情似乎就像是犹豫不决更新一样。
通过阅读其他人对Java 2D性能的评论,我将所有图形图像切换为使用VolatileImage,对于任何非动态图形,我执行offscreen并通过paintComponent中的调用复制到屏幕调用例程(由计时器驱动)。这些图像也被创建为VolatileImage。
在我进行了这些性能增强(即VolatileImages和offScreen绘图缓冲区)之后,我注意到了这种不稳定的屏幕行为。现在,我做出这些改变的原因是利用硬件加速。如何检查是否发生这种情况?而且,关于如何纠正这个生涩的屏幕更新问题的任何想法我现在都在进行?我看到人们谈论使用动态计时器,这会重新计算等待下次更新的时间,给定实际更新所花费的实际时间,以尝试顺利更新图形运动。这是这样做的吗?或者我错过了什么?
感谢。
答案 0 :(得分:0)
你提到paintComponent,所以我假设你使用的是Swing。 Swing默认具有双缓冲,你不应该添加另一层双缓冲。如果您想在没有Swing双缓冲的情况下查看Swing应用程序的行为,请将-Dawt.nativeDoubleBuffering = true标志添加到JVM参数中。另请注意,双缓冲不会提高每秒帧数的性能,只会提高感知性能,请参阅this