我正在开发一个 libGDX(LWJGL 之上的库)游戏项目,并从多个不同的工作站使用 Intellij IDEA IDE:
- Windows 7 x64 笔记本电脑,配备两个显示屏(1920x1080 和 1600x1200),nVidia GT540M。
- 笔记本电脑上的 Ubuntu 12.04 LTS,具有单显示器 (1366x768)、Intel 集成显卡。
- 桌面上的 Ubuntu 12.04 LTS,具有两个显示器(1920x1080 和 1280x1024)、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() 返回的模式列表中显示不同的显示模式 -作为 P.T.下面指出,这是 LWJGL 的薄包装Display.getAvailableDisplayModes()
。为什么会发生这种情况?为什么在 Ubuntu 上的后续运行中会出现一组不同的模式?
编辑:根据 P.T. 的建议,将 LWJGL 引用置于有问题的位置,因为似乎是 LWJGL 提供了显示模式列表。
Thanks!