我正在开发一个基于LWJGL的libGDX游戏项目,并且在多个工作站上使用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,但我的相机移动和Tiled地图平移认为它们有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提供了显示模式列表。
谢谢!
Gdx.graphics.getDisplayModes()
返回的结果更加一致和有用吗?(这有点像鸡生蛋,因为您必须在查询之前初始化libgdx。) - P.T.Gdx.graphics.getDisplayModes()
是不稳定的。它报告了43种模式中,很多时候都没有列出1920x1080。但有时,它会列出几个不同的刷新率?令人沮丧。 - Shad