我正在开发一个 libGDX(LWJGL 之上的库)游戏项目,并使用来自几个不同工作站的 Intellij IDEA IDE:
- Windows 7 x64 笔记本电脑,带有两个显示器(1920x1080 和 1600x1200),nVidia GT540M。
- 笔记本电脑上的 Ubuntu 12.04 LTS,单显示器 (1366x768),英特尔集成显卡。
- 具有两个显示器(1920x1080 和 1280x1024)的桌面上的 Ubuntu 12.04 LTS,nVidia GTS 450。
我在 Ubuntu 机器上使用 OpenJDK for Java 6,在 Windows 机器上使用 Sun/Oracle Java 6(我听说 Java 6 是用于 Android 兼容性的版本)。
全屏运行时:
- Windows 7 笔记本电脑:工作正常。
- Ubuntu 笔记本电脑:工作正常。
- Ubuntu 桌面:背景图像放大显示,只有一部分适合屏幕。+
进一步研究,我看到对 Gdx.graphics.getHeight() 和 Gdx.graphics.getWidth() 的调用返回了覆盖两个显示器所需的矩形大小,在我的例子中是 3200x1080,但是当我告诉我的游戏全屏运行,它只使用其中一个显示器,所以相机设置为 1920x1080,但我的相机移动和平铺地图平移认为他们有 3200x1080 可以使用,这使得事情扭曲和无法使用(因为角色可以走开屏幕右侧)。
我猜我的问题实际上来自 awt.Toolkit 的 getScreenSize() 调用返回的大小,但我不知道如何更深入地询问它以获取当我全屏时它将实际使用的屏幕大小。
我的 DesktopStarter 获取屏幕大小并设置全屏如下:
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
cfg.width = screenDimension.width;
cfg.height = screenDimension.height;
cfg.fullscreen = true;
new LwjglApplication(new Game1(), cfg);
是否有解决方法来获得“全屏”实际启动的显示器的高度/宽度?
所以我看到的问题是执行 game.jar 文件,退出游戏,然后再次重复执行,导致 Gdx.graphics.getDisplayModes() 返回的模式列表中出现不同的显示模式 -正如 PT 在下面指出的,这是 LWJGL 的Display.getAvailableDisplayModes()
. 为什么会这样?为什么在 Ubuntu 的后续运行中会出现一组不同的模式?
编辑:根据 PT 的建议,将 LWJGL 引用置于问题之中,因为提供显示模式列表的似乎是 LWJGL。
谢谢!