Java AWT适合2D游戏渲染吗?

时间:2011-08-30 18:16:24

标签: java 2d awt

我目前正在将我的2D游戏引擎移植到Java。我查看了stackoverflow上指向的一些游戏库。但是,我看到的那些相当简单,甚至没有声明是否支持像alpha透明度这样的东西,所以我决定移植我已经写出逻辑的C ++渲染器。

此渲染器是一个纯软件渲染器,它使用平铺来避免不必要的重新渲染。我通过创建一个比我的输出窗格略大的“屏幕外缓冲区”来优化其滚动性能,并在每帧上将这个屏幕外缓冲区放到我的输出上。通过这种方式,我可以避免不必要地重新绘制图块,因为我在地图上滚动了一个像素。

我使用Java的AWT实现它,使用大的BufferedImage作为屏幕外缓冲区。 CPU的使用率是可以的(大约是我在C ++中的两倍),但连续滚动有一个奇怪的问题,每隔一秒左右,渲染器就会滞后0.2秒左右。

由于我自己的代码中没有任何内容会在这些时段发生,并且因为如果我没有将我的屏幕外缓冲区绘制到主视图上,峰值就会消失,我只能得出结论,Java正在对它自己做一些内部优化。但是,我不确定它做了什么,也不知道我必须删除哪些优化以消除尖峰。此外,它可能是因为Java AWT没有考虑连续的高FPS滚动,而且完全无法用于此目的。

我有办法摆脱这些尖峰吗?

1 个答案:

答案 0 :(得分:0)