创建窗口后GL_RESIZABLE

时间:2015-06-27 06:42:29

标签: java lwjgl glfw window-resize

我真的开始使用LWJGL(我刚刚开始)并且我专注于一件事:当我创建一个窗口并且我想将其设置为不可调整大小时,我使用:

glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
window = glfwCreateWindow(WIDTH, HEIGHT, TITLE, NULL, NULL);

但是,即使我想在窗口创建后设置此,我也不知道如何。我只是尝试在创建窗口后放置命令,但它不起作用:

window = glfwCreateWindow(WIDTH, HEIGHT, TITLE, NULL, NULL);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);

那么,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

来自GLFW Window Guide

  

窗口创建提示

     

在创建窗口和上下文之前,可以设置许多提示。一些影响窗口本身,另一些影响帧缓冲或上下文。每次使用glfwInit初始化库时,这些提示都设置为默认值,可以使用glfwWindowHint单独设置,并使用glfwDefaultWindowHints一次性重置为默认值。

     

请注意,在创建窗口和您希望拥有指定属性的上下文之前,需要设置提示。

基本上,您可以通过glfwWindowHint()调用设置提示,例如窗口是否应该可调整大小,具有哪个上下文版本等。这些提示将在您下次使用glfwCreateWindow()创建窗口时使用。如果在之后设置提示,则创建窗口后,只会影响通话后创建的新窗口。

因此,目前无法在创建后更改某些GLFW窗口属性,例如它是否可调整大小。

答案 1 :(得分:0)

您现在可以更改 glfw 窗口属性:

void glfwSetWindowAttrib(GLFWwindow * window, int attrib, int value);

来自 glfw3lwjgl 的文档

该函数设置指定窗口的属性值。

支持的属性有 GLFW_DECORATED、GLFW_RESIZABLE、GLFW_FLOATING、GLFW_AUTO_ICONIFY 和 GLFW_FOCUS_ON_SHOW。

对于全屏窗口,其中一些属性会被忽略。如果该窗口稍后被设置为窗口化,则新值将生效。

对于窗口模式窗口,其中一些属性会被忽略。如果窗口稍后全屏显示,新值将生效。