首页 > 解决方案 > LibGDX 控制多台显示器

问题描述

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

我发现了一种可以让我实现这一目标的小解决方法:

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

这将在辅助屏幕上的最大化窗口中打开应用程序。但是,我希望能够在第二台(甚至第三台显示器)上启动应用程序而不使其最大化。

有任何想法吗?

标签: javascalalibgdx

解决方案


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

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

例如,在这里,我将列表中的第二个监视器上的窗口居中

    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);

尽管最大化窗口可能会更好的用户体验(谁想在小窗口中玩?)


推荐阅读