LibGDX 控制多台显示器

LibGDX control multiple monitors

我正在尝试通过 LibGDX 创建一个应用程序,我想控制应用程序在哪个监视器上启动。

我找到了一个小的解决方法,可以让我实现这一点:

cfg.setMaximized(true)
cfg.setMaximizedMonitor(Lwjgl3ApplicationConfiguration.getMonitors()(1))
  

这将在辅助屏幕上以最大化 window 打开应用程序。但是,我希望能够在不最大化的情况下在辅助(甚至第三个显示器)上启动应用程序。

有什么想法吗?

在多显示器设置中,显示器并排放置并具有虚拟位置。将 window 从一个监视器移动到另一个监视器就像将其位置更改为在该监视器的范围内一样简单。

在 LibGDX 中,可以使用 Monitor virtualXvirtualY 字段找到监视器位置。它们的尺寸可以通过 config.getDisplayMode(Monitor)

找到

例如,我将 window 集中在列表中的第二台显示器上

    int width = 800;
    int height = 600;

    var mon = monitors[1];
    DisplayMode mode = Lwjgl3ApplicationConfiguration.getDisplayMode(mon);
    int posX = mon.virtualX + mode.width/2 - width/2;
    int posY = mon.virtualY + mode.height/2 - height/2;
    
    config.setWindowedMode(width, height);
    config.setWindowPosition(posX, posY);

尽管最大化 window 可能会带来更好的用户体验(无论如何谁想在小 window 中玩游戏?)