我想将我的OpenGL显示设置为最大化。
如果我setResizeable(true)
我可以让用户手动执行,然后让玩家点击最大化按钮,as a tester mentioned对用户来说是一个痛苦和不必要的步骤。
我可以将显示尺寸设置为与播放器屏幕相同的尺寸,但这看起来很奇怪,而且我不是在寻找全屏模式。
显然我可以全屏显示并设置显示尺寸,但我目前无法找到任何实际上允许我实际最大化显示的方法。
如果你不理解全屏和最大化(Meta Stack Overflow discussion)之间的区别,那么这里是对Maximized的描述,这里是对Fullscreen的描述。
答案 0 :(得分:4)
这个评论太长了,所以我主要在这里发帖:
调用CreateWindow或CreateWindowEx时,请使用WS_MAZIMIZE
。
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"The title of my window",
WS_MAZIMIZE,
CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
NULL, NULL, hInstance, NULL);
如果您使用GLUT,This thread可能会很有用。
建议here是
我认为您可以通过将显示位置设置为最大化窗口 0px,0px并获取桌面DisplayMode Display.getDesktopDisplayMode()然后将此DisplayMode设置为 新的DisplayMode。
<强> setDisplayModeAndFullscreen 强>
public static void setDisplayModeAndFullscreen(DisplayMode mode)
throws LWJGLException
mode.isFullscreenCapable()
为true
,则上下文将成为全屏上下文,并且显示模式将切换为getDisplayMode()
指定的模式。 mode.isFullscreenCapable()
为false
,则上下文将成为窗口上下文,其中维度由getDisplayMode().
返回的模式给出。本机光标位置也会重置。<强>参数:强>
mode - The new display mode to set. Must be non-null.
Throws:
LWJGLException - If the mode switch fails.
找到here。
我还发现this 似乎要提交一个可能的屏幕模式的数组列表 - 但我不确定
答案 1 :(得分:3)
您可以使用jbutler483已经提到的Display.setDisplayModeAndFullscreen(DisplayMode mode)
来更改LWJGL窗口的大小。
但是有一个技巧。 有三种方法可以获得这些显示模式:
如果您使用构造函数,您可以根据自己的喜好定制模式,但这些模式都设置为&#39; isFullscreenCapable()== false&#39;。
如果你想全屏显示,你必须使用&#39; getAvailableDisplayModes()&#39;并选择一个具有&#39; isFullscreenCapable()== true&#39;。这是获得全屏模式的唯一方法。
最后但并非最不重要的是,你可以使用&#39; getDesktopDisplayMode&#39;获得适合桌面的模式。我从未测试过是否可以启用全屏。
答案 2 :(得分:1)
将显示的父级设置为Canvas
附加的JFrame
,然后将JFrame
设置为最大化。
示例:
JFrame frame = new JFrame();
Canvas canvas = new Canvas();
frame.add(canvas);
frame.setVisible(true);
try {
Display.setParent(canvas);
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
}
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);