【问题标题】:JAVA 2D Game Linux terrible FameRateJAVA 2D 游戏 Linux 可怕的 FameRate
【发布时间】:2011-06-08 20:51:12
【问题描述】:

我正在用 java 开发一个 2D 游戏。我们小组通常在Windows和Mac平台上进行开发。 游戏过程中没有出现任何问题,我们有一个60 fps 的恒定帧速率

昨天我们在一台 Linux 计算机上运行我们的游戏,帧速率是每秒只有大约 10 帧

有人听说过这样的事吗?在 Linux 上运行 Java 游戏时遇到问题? 在 Linux 上保持良好的帧速率?

我不知道我应该向您展示哪些代码行(目前超过 12000 行),以便您理解我的问题。 但我会尝试解释一些我们的概念,所以也许你知道一个解决方案,或者你可以给我们一个提示:)

我们构建了一个内容管理器服务,它加载并保存我们应该在 JFrame 上绘制的图像。通常我们使用 png 格式的图像。

非常简短的摘录:

//Load our images which are later drawn on the Frame
URL url = this.getClass().getClassLoader().getResource( the right image Path);
this.image = ImageIO.read(url);

//extract of draw
this.graphicsDevice.getGraphics().drawImage(ourImage, x , y , null);

我们同时有大约25个不同的图像,它们直接绘制在JFrame的图形设备上。

我对 Linux 没有任何经验,这就是为什么我无法理解糟糕的帧速率的根源。 (请记住,在 windows 和 mac 电脑上它是恒定的 62 fps,使用相同的代码:()

如果有人需要更多信息来提供帮助,我会尝试添加一些。

感谢阅读!

最好的问候 火龙

【问题讨论】:

  • 系统上是否有实际的 JVM?您确定使用的是这个 JVM 而不是一些旧的实现吗?
  • 你的测试机的显卡在 Linux 上的支持情况如何?您可能正在将帧速率与可以使用硬件加速/适当 OpenGL 驱动程序的 Windows 或 Mac 进行比较...

标签: java linux frame-rate


【解决方案1】:

我会询问遇到此类问题的用户,他正在运行哪个版本的 X、显卡驱动程序和 jre,以及是否打开了合成。

更新到较新版本的 openjre 后,同一应用程序的 RAM/CPU 使用率急剧增加。

没有 Linux 机器这样的东西,有 (AMD|nVidia|Intel) 显卡运行(最新|过时)(专有|免费)驱动程序和 (KDE|Gnome|whatever) 和 (openjre|sunjre) 的机器,并且软件/硬件的每种组合都会显示不同的结果。

我会尝试在 AMD 和 nVidia 机器上使用专有和免费驱动程序以及 openjre 和 sunjre 测试应用程序,以了解导致低 fps 的原因。

【讨论】:

  • 感谢您的回答,昨天晚上我们找到了问题的根源。我们正在使用透明图像,这会导致麻烦。我的一个朋友用我们的新问题提出了一个新话题:stackoverflow.com/questions/6290576/…
  • 我相信 WeGi 的回答对你来说更有用,因为它更具体的语言,而我的回答只是关于在 Linux 中测试/故障排除应用程序的一些琐碎信息。
【解决方案2】:

我怀疑,您在绘画过程中没有包含 Linux 缓冲。 尝试添加 Toolkit.getDefaultToolkit().sync();在你的绘画方法中。祝你好运。

【讨论】:

  • 感谢您的回答,昨天晚上我们找到了问题的根源。我们正在使用透明图像,这会导致麻烦。我的一个朋友用我们的新问题提出了一个新话题:stackoverflow.com/questions/6290576/…
【解决方案3】:

在两者上分析您的代码,以便您可以查看是否是某个特定区域导致了问题。

另外,比较两台机器的规格,如果 Linux 机器在慢得多的硬件上运行,这可能是您的问题。

【讨论】:

  • 感谢您的回答,昨天晚上我们找到了问题的根源。我们正在使用透明图像,这会导致麻烦。我的一个朋友用我们的新问题提出了一个新话题:stackoverflow.com/questions/6290576/…
猜你喜欢
  • 2014-01-21
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
  • 1970-01-01
相关资源
最近更新 更多