java - 如何在全屏下使用正确的LWJGL DisplayMode?

标签 java fullscreen lwjgl screen-resolution displaymode

我在让我的程序全屏显示时遇到问题:

Display.setFullscreen(true);

...但是以下答案对我有帮助:LWJGL Fullscreen not working

这个答案建议我迭代所有可用的 DisplayMode 并找到兼容的 DisplayMode。这是我目前拥有的代码:

if (!fullscreen)
    Display.setDisplayMode(new DisplayMode(width, height));
else {
    DisplayMode displayMode = null;
    DisplayMode[] modes = Display.getAvailableDisplayModes();
    ArrayList<String> compatibleModes = new ArrayList<String>();
    for (int i = 0; i < modes.length; i++) {
        System.out.println("Mode "+i+": "+modes[i].toString());
        if (modes[i].getWidth() == width && modes[i].getHeight() == height
                && modes[i].isFullscreenCapable()) {
            displayMode = modes[i];
            compatibleModes.add(modes[i].toString());
        }
    }
    if(compatibleModes.isEmpty()){
        System.out.println("No compatible display modes!");
        System.exit(-1);
    }
    System.out.println("Display Modes :: "+modes.length+" Total :: "+compatibleModes.size()+" Compatible :: "+displayMode.toString()+" Selected");
    for (String string : compatibleModes) {
        System.out.println("Compatible: "+string);
    }
    Display.setDisplayMode(displayMode);
    Display.setFullscreen(true);
}
Display.create(new PixelFormat(), attribs);

我的控制台日志显示:(为了清楚起见,我省略了一些不相关的模式)

Mode 0: 1920 x 1080 x 32 @24Hz
Mode 5: 1920 x 1080 x 32 @23Hz
Mode 18: 1280 x 1024 x 32 @60Hz
Mode 19: 1920 x 1080 x 32 @59Hz
Mode 20: 1920 x 1080 x 32 @60Hz
Mode 21: 1920 x 1080 x 32 @50Hz
Mode 23: 1920 x 1200 x 32 @59Hz
Mode 25: 1920 x 1200 x 32 @60Hz
Mode 26: 1768 x 992 x 32 @24Hz
Mode 28: 1920 x 1440 x 32 @59Hz
Mode 29: 2560 x 1440 x 32 @59Hz <-- I have a 1440p monitor, why is this NOT compatible?
Mode 30: 1280 x 800 x 32 @60Hz
Mode 31: 1920 x 1440 x 32 @60Hz
Mode 49: 1600 x 1200 x 32 @59Hz
Mode 50: 1600 x 1200 x 32 @60Hz
Display Modes :: 53 Total :: 3 Compatible :: 1280 x 720 x 32 @60Hz Selected
Compatible: 1280 x 720 x 32 @50Hz
Compatible: 1280 x 720 x 32 @59Hz
Compatible: 1280 x 720 x 32 @60Hz

全屏游戏在我的电脑上以 1440p 运行良好,所以我不确定为什么该模式不可用。当我启动该程序时,屏幕非常模糊。

我该如何解决这个问题?预先感谢您。

最佳答案

也许尝试使用

Display.setDisplayModeAndFullscreen(Display.getDesktopDisplayMode());

即使它不能解决 1440p 问题,它仍然是获得全屏显示模式的更简洁的方法。

关于java - 如何在全屏下使用正确的LWJGL DisplayMode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38842948/

相关文章:

java - 释放Process的所有资源

java - 在一个范围内随机选择 k 个不同的数字

swift - 播放视频不是全屏,swift 3

java - Opengl 渲染 - z 范围 -1 到 1 之外的任何内容都不会出现?

java - 如何在 webstart 上使用 jnlp 运行 lwjgl?

java - 打开示例项目上的 Liberty 日志配置异常

java - 关于 ExtJs 4 加载缓慢的查询

c++ - SDL 中的真正全屏

在浏览器中 Flash 到全屏

java - OpenGL - 奇怪的 "visual"错误