2017-06-14 75 views
0

我知道,你可以使用跟踪窗口大小调整操作:lwjgl3窗口调整最终事件?

glfwSetWindowSizeCallback(window, wsCallback = new GLFWWindowSizeCallback() { 
     @Override 
     public void invoke(long window, int w, int h) { 
      LOG.info("window resized"); 
      if (w > 0 && h > 0) { 
       width = w; 
       height = h; 
      } 
     } 
    }); 

然而,这样的invoke方法被潜在调用数百次,我只希望最后一场比赛,以保存新的大小在配置。我如何做到这一点,而不使用某种类型的延迟机制,例如在进一步调用调用时刷新的一秒定时器?

回答

1

GLFW回调的设置方式是在每次调用glfwPollEvents()时刷新。如果您只想在最终更新中设置配置变量,则本身并不可行。我想有一个void dispose()方法中,你可以调用这个:

public void dispose() { 
    try (MemoryStack stack = stackPush()) { 
     IntBuffer width = stack.ints(1); 
     IntBuffer height = stack.ints(1); 
     glfwGetWindowSize(windowID, width, height); 
     configuration.width = width.get(); 
     configuration.height = height.get(); 
    } 
} 

这允许你当你想关闭该窗口,一旦设置的配置数据。这种技术的缺点是,如果应用程序崩溃或未调用方法dispose(),配置数据不会被保存。