我有一个用 LWJGL 2 制作的简单游戏,我想让它获得给定窗口大小可能达到的最佳分辨率。
似乎与DisplayMod有关,但如果我不在FullScreen mod中,它不会改变游戏分辨率,它只是调整窗口大小。
我可以通过:Display.setDisplayMode(DisplayMode)
在FullScreen中做我想要的,但正如我所说,如果显示器不是全屏模式,它只是改变窗口大小,但不是决议。
所以我的问题是,如何在没有全屏/调整窗口大小的情况下获得更好的分辨率?
编辑(04/08/2017):
为了帮助您理解我的问题,我在切换到FullScreen / Windowed时录制了一段短视频:https://www.mediafire.com/file/j9t06qa3aaw9e59/Resolution%20bug.mov
答案 0 :(得分:1)
在创建框架juste put时,在全屏模式下更改游戏分辨率
Display.setFullscreen(true);
并在创建DisplayMode的新ArrayList
之后ArrayList<DisplayMode> Mode = new ArrayList<DisplayMode>();
创建新的ArrayList后,通过图形卡获得所有屏幕尺寸支持
try {
DisplayMode[] modes;
modes = Display.getAvailableDisplayModes(); //get all resolution
for (int i=0;i<modes.length;i++) {
DisplayMode current = modes[i]; //add all DisplaMode to arraylist
Resolutions.add(current);
}
} catch (LWJGLException e) {
e.printStackTrace();
}
for (DisplayMode mode : Resolutions) { //optional just to see all resolution
System.out.println(mode.getWidth() + "x" + mode.getHeight() + "x"+mode.getBitsPerPixel() + " " + mode.getFrequency() + "Hz");
}
加载DisplayMode
Display.setDisplayMode(Mode.get(int));
答案 1 :(得分:0)
要设置分辨率,您需要使用帧缓冲区。您需要渲染到帧缓冲区,然后当您准备好将具有适当分辨率的帧缓冲区发送到屏幕时,您将帧缓冲区blit到窗口的后缓冲区。这是一个tutorial,虽然在C ++中。这应该让你指向正确的方向!