1

我正在使用 OpenGL 包,并且也在使用 GLUT 包。尽管 GLUT 包似乎有鼠标滚轮回调,但它似乎不起作用(文档只说 freeglut)。

那么......在一个 GLUT 创建的窗口中,如何访问鼠标滚轮事件?

4

3 回答 3

2

OpenGL 不创建窗口。本质上,它只是一堆绘制事物的函数。它的事件处理完全超出了 OpenGL 的范围。GLUT 不是 OpenGL 的核心部分。这是一个相当古老的库,目的是让编写简单的 OpenGL 教程变得容易。而已。

你应该使用更优秀的 GLFW 而不是 GLUT,它也存在优秀的 Haskell 绑定:http: //hackage.haskell.org/package/GLFW

于 2011-01-31T13:22:35.757 回答
1

我还建议避免 GLUT。无论如何,它是非常有限的。

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

有点无意义的事后编辑:我在评论中被告知 GLFW 还允许运行您自己的事件循环。再看一遍之后,我绝对同意 GLFW 是大多数不需要标准 UI 小部件的事情的方式。

于 2011-01-31T15:00:12.180 回答
1

只是为了添加另一个选项......</p>

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

于 2011-01-31T14:43:26.020 回答