如何在Haskell中的GLUT窗口中对鼠标滚轮事件做出反应?

时间:2011-01-31 11:28:33

标签: haskell glut mousewheel glfw

我正在使用OpenGL包,并且也在使用GLUT包。虽然GLUT包似乎有一个鼠标滚轮回调,但它似乎不起作用(doc说只有freeglut)。

所以...在GLUT创建的窗口内,如何访问鼠标滚轮事件?

3 个答案:

答案 0 :(得分:2)

OpenGL不会创建窗口。从本质上讲,它只是绘制事物的一大堆功能。事件处理完全超出了OpenGL的范围。 GLUT不是OpenGL的核心部分。这是一个相当古老的库,目的是使编写简单的OpenGL教程变得容易。没什么。

您应该使用远优于GLFW的GLFW代替GLUT,同时还存在优秀的Haskell绑定:http://hackage.haskell.org/package/GLFW

答案 1 :(得分:1)

只是添加另一个选项......

当我厌倦了GLUT时,我切换到Gtk2Hs。 wiki上有几个简单的示例演示了GtkGLext。

答案 2 :(得分:1)

我也建议避免使用GLUT。无论如何,它非常有限。

另一种选择,如果您更喜欢处理自己的主事件循环而不是使用回调,则使用SDL。是的,它适用于游戏,但它可以为您提供GL上下文,并且适用于大多数不需要标准UI小部件的交互式OpenGL应用程序。它为您提供键盘/鼠标事件,毫秒计时器和一些非常基本的窗口管理。

KINDA POINTLESS POST-HOC EDIT :我在评论中得到通知,GLFW还允许运行您自己的事件循环。再看一遍之后,我绝对同意GLFW是大多数不需要标准UI小部件的方法。