【问题标题】:FPS drops in Fullscreen mode but fine in Window/Applet?FPS 在全屏模式下下降,但在 Window/Applet 中正常?
【发布时间】:2012-06-24 12:01:45
【问题描述】:

我一直在研究游戏引擎。它可以在窗口模式、全屏模式或小程序模式下创建游戏。 FPS 在小程序模式和窗口模式下很好(给我 90-120 fps,地图中最多 3000 个对象),但在全屏模式下,它会下降到 25-50 fps。这是窗口类。

https://code.google.com/p/game-engine-for-java/source/browse/src/com/gej/core/GWindow.java

找不到问题所在。在 Windows 上运行更多是好的,但在 Ubuntu 上它有这个问题。列出显示模式给了我位深度 -1 这是我机器上的完整列表。

1600     900     -1
1440     900     -1
1440     900     -1
1280     800     -1
1280     800     -1
1152     864     -1
1024     768     -1
1024     768     -1
1024     768     -1
832      624     -1
800      600     -1
800      600     -1
800      600     -1
800      600     -1
640      480     -1
640      480     -1
640      480     -1
640      480     -1
720      400     -1

我发现位深度 -1 表示 BIT_DEPTH_MULTI,它是 DisplayMode 类中的一个常量。因此,设置模式将 fps 提高到 60-70fps,但仍不如窗口模式。

【问题讨论】:

  • 如果窗口模式窗口与全屏“一样大”会怎样?
  • 拉伸显示(使用窗口模式作为全屏)给我与全屏模式相同的 fps(图形需要缩放)
  • 那你的问题是需要画更多。
  • @ColeJohnson 我只在地图中绘制可见对象。那怎么可能??这是我的地图课。 code.google.com/p/game-engine-for-java/source/browse/src/com/…
  • 你说,如果窗口和屏幕大小一样,它就会滞后。这意味着您的卡无法处理绘制那么多对象。只画看得见的东西是一件非常聪明的事情。但除非你缓冲屏幕,否则没什么可做的。

标签: java fullscreen frame-rate


【解决方案1】:

Java2D 是否在 Ubuntu 上使用硬件加速?看看一些Java 2d flags,尤其是那些打开 OpenGL 的。

在 Windows 上,默认使用 Direct3D 加速。在 Linux 上,不会默认获得 OpenGL,因此请尝试在启动 JVM 时使用命令行选项 -Dsun.java2d.opengl=true 将其打开。

【讨论】:

  • 收到此错误“i915_program_error:超过最大 nr 间接纹理查找(4 个中的 6 个)”
  • 让它以 60-76fps 运行,但错误消息继续显示
  • @SriHarshaChilakapati 也许您的显卡/驱动程序无法为 Java2D 运行 OpenGL 后端(参考我发现的此错误here)如果您无法更新您的显卡驱动程序,您可能必须接受 Java2D/OpenGL 不适用于您当前的硬件。
  • 但是fps略有增加。从命令行使用选项调用 JVM 时出现此错误。但是当我把它放在构造函数中时,我得到了 60-76 fps,现在捕获异常并没有给我错误消息。
猜你喜欢
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多