我正在使用 X11 和 xfce4 在 x86_64 Arch Linux 上运行,并尝试使用 OpenGL 和 GLFW-b 库编译一个简单的 OpenGL/GLFW 应用程序。不过,我无法关闭窗口 - 我只能用 Ctrl-C 杀死它。
代码在http://pastebin.com/i7Zshfk1
谢谢!
我正在使用 X11 和 xfce4 在 x86_64 Arch Linux 上运行,并尝试使用 OpenGL 和 GLFW-b 库编译一个简单的 OpenGL/GLFW 应用程序。不过,我无法关闭窗口 - 我只能用 Ctrl-C 杀死它。
代码在http://pastebin.com/i7Zshfk1
谢谢!
您的 main 函数中有一个无限循环。即使主窗口关闭,您仍然会在后台运行主更新循环。您可以通过使用这样的主循环来解决问题:
mainLoop = do
drawFrame
swapBuffers
-- Check if window is still open
isOpen <- windowIsOpen
-- Call mainLoop recursively
when isOpen mainLoop
然后你应该调用mainLoop
函数而不是forever $ do ...
循环。
另请注意,您应该注意 FPS 限制;您将搞砸可能由您的驱动程序或 GLFW 选项控制的自动 vsync。swapBuffers
尽可能快地跟注几乎总是更好。