Java和libGDX / LWJGL游戏全屏错误大小,适用于Ubuntu上的多个显示器
我正在开发一个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()调用,但我不知道如何更深入地询问它,以获得当我全屏时它实际使用的屏幕大小。
我的桌面启动器获取屏幕大小并设置全屏,如下所示:
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);
有没有一个解决方法来获取“全屏”实际启动的显示器的高度/宽度?
因此,我看到的麻烦在于,执行游戏.jar文件,退出游戏,然后再次执行,重复执行,导致不同的显示模式显示在Gdx.graphics.getDisplayModes()返回的模式列表中 - 正如P.T.在下面指出的那样,这是围绕LWJGL的薄包装。为什么会发生这种情况?为什么在 Ubuntu 的后续运行中会呈现一组不同的模式?Display.getAvailableDisplayModes()
编辑:根据P.T.的建议,将LWJGL引用放在有问题的地方,因为似乎是LWJGL提供了显示模式列表。
谢谢!