我知道您可以使用以下方式跟踪窗口调整大小操作:
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方法数百次,我只希望最终事件在配置中存储新的大小。如何在不使用某种延迟机制的情况下执行此操作,例如在进一步调用调用时刷新的一秒计时器?
答案 0 :(得分: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()
方法,则不会保存配置数据。