私はOpenGLパッケージを使用しており、GLUTパッケージも使用していました。GLUTパッケージにはマウスホイールコールバックがあるように見えますが、機能していないようです(ドキュメントにはfreeglutのみと記載されています)。
では、GLUTで作成されたウィンドウ内で、マウスホイールイベントにアクセスするにはどうすればよいでしょうか。
私はOpenGLパッケージを使用しており、GLUTパッケージも使用していました。GLUTパッケージにはマウスホイールコールバックがあるように見えますが、機能していないようです(ドキュメントにはfreeglutのみと記載されています)。
では、GLUTで作成されたウィンドウ内で、マウスホイールイベントにアクセスするにはどうすればよいでしょうか。
OpenGLはウィンドウを作成しません。本質的には、物を描くための関数の集まりにすぎません。イベント処理は完全にOpenGLの範囲外です。GLUTはOpenGLのコア部分ではありません。これは、単純なOpenGLチュートリアルを簡単に作成できるようにすることを目的としたかなり古いライブラリです。これ以上何もない。
GLUTの代わりに、はるかに優れたGLFWを使用する必要があります。これには、優れたHaskellバインディングも存在します:http://hackage.haskell.org/package/GLFW
別のオプションを追加するだけです…</p>
GLUTにうんざりしたとき、Gtk2Hsに切り替えました。ウィキには、GtkGLextを示す簡単なサンプルがいくつかあります。
また、GLUTを避けることをお勧めします。とにかくかなり制限されています。
コールバックを使用するのではなく、独自のメインイベントループを処理する場合の別のオプションは、SDLを使用することです。はい、ゲームを対象としていますが、GLコンテキストを提供し、標準のUIウィジェットを必要としないほとんどのインタラクティブなOpenGLアプリケーションで十分に機能します。キーボード/マウスイベント、ミリ秒タイマー、およびいくつかの非常に基本的なウィンドウ管理を提供します。
KINDA POINTLESS POST-HOC EDIT:GLFWでも独自のイベントループを実行できるというコメントがありました。もう一度見てみると、GLFWは、標準のUIウィジェットを必要としないほとんどのものに対応する方法であることに間違いなく同意します。