有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaAWT适合2d游戏渲染吗?

我目前正在将我的2D游戏引擎移植到Java。我查看了stackoverflow上的一些游戏库。然而,我所看到的那些是非常简单化的,如果它们支持alpha透明的东西,甚至没有声明,所以我决定将我的C++渲染器移植到我已经写出了逻辑的地方。p>

此渲染器是纯软件渲染器,它使用平铺来避免不必要的重新渲染。我优化了它的滚动性能,创建了一个比我的输出窗格大一点的“屏幕外缓冲区”,并在每一帧上将这个屏幕外缓冲区显示在我的输出上。这样,我就可以避免仅仅因为我在地图上滚动了一个像素而不必要地重画瓷砖

我使用Java的AWT来实现它,使用一个大的BuffereImage作为屏幕外的缓冲区。CPU的使用是正常的(大约是我在C++中使用的两倍),但是连续滚动有一个奇怪的问题,大约每秒钟,渲染器就会延迟0.2秒

由于我自己的代码中没有任何东西会在这些时间段内出现,而且如果我不在主视图上绘制屏幕外缓冲区,峰值就会消失,因此我只能得出结论,Java正在自己进行一些内部优化。然而,我不知道它做了什么,也不知道我自己的哪些优化需要删除才能消除尖峰。另外,可能是JavaAWT没有考虑到连续的、高FPS的滚动,这完全不适用于此目的

有什么办法让我摆脱这些钉子吗


共 (1) 个答案