我正在使用X11和xfce4在x86_64 Arch Linux上运行,并尝试使用OpenGL和GLFW-b库编译一个简单的OpenGL / GLFW应用程序。我无法让窗口关闭,但我只能用Ctrl-C杀死它。
代码http://pastebin.com/i7Zshfk1
谢谢!
答案 0 :(得分:3)
主函数中有一个无限循环。即使主窗口关闭,您仍然可以在后台运行主更新循环。您可以使用这样的主循环来解决问题:
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
几乎总是更好。