利用lwjgl获得当前屏幕设备可支持分辨率列表根据版本不同方法也有很大的变化
lwjgl-2.X.X
在lwjgl-2.X.X版本中Display
与DisplayMode
可被用来获得当前屏幕设备可支持分辨率列表
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版本中Display
与DisplayMode
已经找不到这两个类了,所以,获得当前屏幕设备可支持分辨率列表也有很大不同。用来替代该方法的是:在lwjgl-glfw-3.X.X.jar包下的两个类GLFW
和GLFWVidMode
。
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