我正在使用 OpenGL 包,并且也在使用 GLUT 包。尽管 GLUT 包似乎有鼠标滚轮回调,但它似乎不起作用(文档只说 freeglut)。
那么......在一个 GLUT 创建的窗口中,如何访问鼠标滚轮事件?
我正在使用 OpenGL 包,并且也在使用 GLUT 包。尽管 GLUT 包似乎有鼠标滚轮回调,但它似乎不起作用(文档只说 freeglut)。
那么......在一个 GLUT 创建的窗口中,如何访问鼠标滚轮事件?
OpenGL 不创建窗口。本质上,它只是一堆绘制事物的函数。它的事件处理完全超出了 OpenGL 的范围。GLUT 不是 OpenGL 的核心部分。这是一个相当古老的库,目的是让编写简单的 OpenGL 教程变得容易。而已。
你应该使用更优秀的 GLFW 而不是 GLUT,它也存在优秀的 Haskell 绑定:http: //hackage.haskell.org/package/GLFW
我还建议避免 GLUT。无论如何,它是非常有限的。
如果您更喜欢处理自己的主事件循环而不是使用回调,另一种选择是使用SDL。是的,它是为游戏而设计的,但它可以为您提供 GL 上下文,并且对于大多数不需要标准 UI 小部件的交互式 OpenGL 应用程序来说工作得很好。它为您提供键盘/鼠标事件、毫秒计时器和一些非常基本的窗口管理。
有点无意义的事后编辑:我在评论中被告知 GLFW 还允许运行您自己的事件循环。再看一遍之后,我绝对同意 GLFW 是大多数不需要标准 UI 小部件的事情的方式。
只是为了添加另一个选项......</p>
当我厌倦了 GLUT 时,我切换到Gtk2Hs。wiki 上有几个简单的示例演示 GtkGLext。