0

X11 および xfce4 を使用して x86_64 Arch Linux を実行しており、OpenGL および GLFW-b ライブラリを使用して単純な OpenGL/GLFW アプリケーションをコンパイルしようとしています。ただし、ウィンドウを閉じるのに問題があります-Ctrl-Cでしかウィンドウを強制終了できません。

http://pastebin.com/i7Zshfk1のコード

ありがとう!

4

1 に答える 1

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できるだけ早く電話するだけで、ほとんどの場合、より良い結果が得られます。

于 2012-05-19T03:39:22.373 に答える