Libgdx无边框全屏

6

我试图让用户选择游戏的玩法方式。窗口模式和全屏模式都没有问题。但是我似乎无法让无边框全屏/窗口全屏正常运行。 我在网上搜索了很多,只找到一个帮助我的网站:

http://badlogicgames.com/forum/viewtopic.php?f=11&t=13863

我按照指示进行操作,我认为它有点有效,但我的问题是,Windows 10底部的工具栏总是在窗口前面。

这是它的外观图片:

http://imgur.com/hdA3LAb

颜色很糟糕,但只是为了测试目的。 代码如下:
if (screenManager.FULLSCREEN) {
    Gdx.graphics.setDisplayMode(Gdx.graphics.getDesktopDisplayMode().width, Gdx.graphics.getDesktopDisplayMode().height, true);
} else if (screenManager.WINDOWEDFULLSCREEN) {
    System.setProperty("org.lwjgl.opengl.Window.undecorated", "true");
    Gdx.graphics.setDisplayMode(Gdx.graphics.getDesktopDisplayMode().width,
    Gdx.graphics.getDesktopDisplayMode().height, false);
} else {
    Gdx.graphics.setDisplayMode(screenManager.WIDTH, screenManager.HEIGTH, false);
} 

我该如何解决这个问题?

编辑: 我已经更新到1.9.2版本,该版本不再有setDisplayMode方法。 现在的代码看起来是这样的:

DisplayMode mode = Gdx.graphics.getDisplayMode();
if (screenManager.FULLSCREEN) {
    Gdx.graphics.setWindowedMode(Gdx.graphics.getDisplayMode().width, Gdx.graphics.getDisplayMode().height);
    Gdx.graphics.setFullscreenMode(mode);
} else if (screenManager.WINDOWEDFULLSCREEN) {
    System.setProperty("org.lwjgl.opengl.Window.undecorated", "true");
    Gdx.graphics.setWindowedMode(Gdx.graphics.getDisplayMode().width, Gdx.graphics.getDisplayMode().height);
    //Gdx.graphics.setFullscreenMode(mode);
} else {
    Gdx.graphics.setWindowedMode(screenManager.WIDTH, screenManager.HEIGTH);
}

一切都像以前一样,只是无边框全屏模式下,Windows工具栏(底部的那个东西)会在其前面显示,就像图片中一样。正常的全屏模式没有问题。


你想要移除窗口应用程序的边框吗?如果是的话,那么你可能想尝试问一下“如何从窗口应用程序中移除边框”。因为现在你的问题含糊不清,让很多人感到困惑。当你提出问题时,请具体说明,并将所有无关的内容剔除掉。 - Madmenyo
@MennoGouw 代码已经删除了边框... - LePotatoCannon
1个回答

5

我在我的Windows 10机器上测试了以下配置,并且它能够正常工作:

public class DesktopLauncher {
    public static void main (String[] arg) {
        LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
        config.width = LwjglApplicationConfiguration.getDesktopDisplayMode().width;
        config.height = LwjglApplicationConfiguration.getDesktopDisplayMode().height;
        config.fullscreen = true;
        new LwjglApplication(new MyGame(), config);
    }
}

你应该在桌面模块的DesktopLauncher中设置这个。

更新
你可以尝试以下方法:

Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode());

另外,您使用的是哪个版本的LibGDX?我正在使用1.8.0版本,但我没有Gdx.graphics.setDisplayMode()方法。


1
如果我这样做,游戏将始终全屏。但用户应该能够选择全屏、窗口全屏和窗口模式... - LePotatoCannon
我已经获得了1.6.0版本,全屏模式可以正常运行,只是窗口化全屏模式出现了问题,希望您理解我的意思... - LePotatoCannon
同时,很明显工具栏在前面的原因是我将显示模式设置为窗口并移除了框架,但是我该如何将窗口置于所有东西的前面,就像现代游戏一样? - LePotatoCannon
在我看来,工具栏始终位于打开的应用程序前面似乎只是Windows的一个特性。我刚刚测试了“奇异人生”游戏,如果我将其设置为窗口化全屏模式,工具栏也会在前面。不幸的是,我没有其他游戏可以测试。 - Enigo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接