如何将OpenGL显示(由OpenGL创建的窗口)设置为最大化?

如何将OpenGL显示(由OpenGL创建的窗口)设置为最大化?,opengl,lwjgl,Opengl,Lwjgl,我想将我的OpenGL显示设置为最大化 如果我setResizeable(true),然后让玩家点击最大化按钮,我可以让用户手动操作,这对用户来说是一个痛苦和不必要的步骤 我可以将显示大小设置为与玩家屏幕相同的大小,但这看起来很奇怪,我不想选择全屏模式 显然,我已经可以全屏显示并设置显示大小,但我目前找不到任何方法可以真正使显示最大化 如果您不理解fullscreen和maximized()之间的区别,那么这里是的描述,这里是的描述。这太长了,不能作为评论,所以我主要在这里发布: 最大化模式:

我想将我的OpenGL显示设置为最大化

如果我
setResizeable(true)
,然后让玩家点击最大化按钮,我可以让用户手动操作,这对用户来说是一个痛苦和不必要的步骤

我可以将显示大小设置为与玩家屏幕相同的大小,但这看起来很奇怪,我不想选择全屏模式

显然,我已经可以全屏显示并设置显示大小,但我目前找不到任何方法可以真正使显示最大化


如果您不理解fullscreen和maximized()之间的区别,那么这里是的描述,这里是的描述。

这太长了,不能作为评论,所以我主要在这里发布:

最大化模式: 调用CreateWindow或CreateWindowEx时,请使用
WS\u 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);
如果您正在使用过量,可能会感兴趣

有人建议

我认为您可以通过将显示位置设置为 0px,0px和通过 然后将此显示模式设置为 新的显示模式

全屏模式: 设置显示模式和全屏

public static void setDisplayModeAndFullscreen(DisplayMode mode)
                                        throws LWJGLException
  • 设置上下文的模式
  • 如果没有通过create()创建上下文,则调用create()时将应用该模式
  • 如果
    mode.isfullscreenable()
    true
    ,则上下文将成为全屏上下文,显示模式切换到
    getDisplayMode()
    给定的模式
  • 如果
    mode.isfullscreenable()
    false
    ,则上下文将变为窗口上下文,其尺寸在
    getDisplayMode()返回的模式中给定。
    本机光标位置也将重置
参数:

mode - The new display mode to set. Must be non-null.
Throws:
LWJGLException - If the mode switch fails.
找到了


我还发现它似乎在用可能的屏幕模式填充一个数组列表,但我不确定您是否可以使用jbutler483已经提到的
Display.setDisplayMode和FullScreen(DisplayMode模式)
更改LWJGL窗口的大小

但这有一个诀窍。 有三种方法可以获得这些显示模式:

  • ''
  • ''
  • ''
如果使用构造函数,您可以根据自己的喜好定制模式,但这些模式都设置为“isFullscreenCapable()==false”

如果要全屏显示,必须使用“getAvailableDisplayModes()”并选择一个具有“isFullscreenCapable()==true”的模式。这是获得全屏模式的唯一方法


最后但并非最不重要的一点是,您可以使用“getDesktopDisplayMode”获得适合桌面的模式。我从未测试过是否可以启用全屏。

将显示器的父级设置为连接到
JFrame
Canvas
,然后将
JFrame
设置为最大化

例如:

JFrame=newjframe();
画布=新画布();
frame.add(画布);
frame.setVisible(true);
试一试{
Display.setParent(画布);
Display.create();
}捕获(LWJGLEXE){
e、 printStackTrace();
}
setExtendedState(JFrame.MAXIMIZED_二者);

您使用什么框架来创建窗口和GL上下文?我怀疑您可能必须找到屏幕分辨率,并将窗口位置/大小设置为匹配。您可以使用最大化提示创建窗口,但这取决于您如何创建窗口(与openGL@ratchetfreak我使用“display.create()”创建显示。我目前没有办法给出“最大化提示”@jozxyqk我可以这样做,但它不一样,边框看起来都不稳定。也许将标题改为专门设置lwjgl窗口-最大化的是窗口管理器,而不是GL,但java和lwjgl挡住了你的去路。也许会在上面发帖子?但我从来不叫“CreateWindowEx”?有点混乱。你调用“CreateWindow”吗?没有。我调用“Display.create()”。就是这样。虽然这并不能真正回答这个问题,但正如你所说,getDesktopDisplayMode()似乎返回了一种适合桌面的模式,它不是全屏的,但非常接近-所以我给了它一个投票。谢谢你的帮助。