通过lwjgl获得显示设备当前分辨率、可支持分辨率列表

利用lwjgl获得当前屏幕设备可支持分辨率列表根据版本不同方法也有很大的变化

lwjgl-2.X.X

在lwjgl-2.X.X版本中DisplayDisplayMode可被用来获得当前屏幕设备可支持分辨率列表

import org.junit.Test;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;

public class TestReslution {
    @Test
    public void display() {
        try {
            // 获得可支持分辨率集合
            DisplayMode[] modes = Display.getAvailableDisplayModes();
            for (DisplayMode mode : modes) {
                int width = mode.getWidth();
                int height = mode.getHeight();
                System.out.printf("%sx%s,%sHz %s色 %n", mode.width(), mode.height(), mode.getFrequency(), mode.getBitsPerPixel());
            }
            // 获得当前分辨率
            DisplayMode mode = Display.getDisplayMode();
            System.out.printf("%sx%s,%sHz %s色 %n", mode.width(), mode.height(), mode.getFrequency(), mode.getBitsPerPixel());
        } catch (LWJGLException e) {
            e.printStackTrace();
        }
    }
}

lwjgl-3.X.X

在lwjgl-3.X.X版本中DisplayDisplayMode已经找不到这两个类了,所以,获得当前屏幕设备可支持分辨率列表也有很大不同。用来替代该方法的是:在lwjgl-glfw-3.X.X.jar包下的两个类GLFWGLFWVidMode

import org.junit.Test;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWVidMode;

public class TestReslution {
    @Test
    public void display() {
        GLFW.glfwInit();
        // 获得屏幕设备的编号
        long monitor = GLFW.glfwGetPrimaryMonitor();
        // 获得分辨率对象
        GLFWVidMode.Buffer modes = GLFW.glfwGetVideoModes(monitor);
        // 遍历循环分辨率
        while (modes.hasRemaining()) {
            GLFWVidMode mode = modes.get();
            System.out.printf("%sx%s,%sHz 红%s,绿%s,蓝%s %n", mode.width(), mode.height(), mode.refreshRate(), mode.redBits(), mode.greenBits(), mode.blueBits());
        }
        // 获得当前分辨率
        GLFWVidMode mode = GLFW.glfwGetVideoMode(monitor);
        System.out.printf("%sx%s,%sHz 红%s,绿%s,蓝%s %n", mode.width(), mode.height(), mode.refreshRate(), mode.redBits(), mode.greenBits(), mode.blueBits());
    }
}

总结

从上述代码中可以看出
1. 在3.x.x版本可以支持分不同屏幕设备获得不同的分辨率列表
2. 在3.x.x版本中色彩划分也更细致到RGB

猜你喜欢

转载自blog.csdn.net/zhuiyucanxin/article/details/79847188