Как реагировать на события с колесом мыши в окне GLUT в Haskell? - PullRequest
1 голос
/ 31 января 2011

Я использую пакет OpenGL, а также пакет GLUT. Хотя пакет GLUT, кажется, имеет функцию обратного вызова колесика мыши, он не работает (док говорит только о freeglut).

Итак ... как создать окно GLUT, как получить доступ к событиям колеса мыши?

Ответы [ 3 ]

2 голосов
/ 31 января 2011

OpenGL не создает окна.По сути это просто набор функций для рисования вещей.Обработка событий полностью выходит за рамки OpenGL.GLUT не является основной частью OpenGL.Это довольно старая библиотека с целью облегчить написание простых руководств по OpenGL.Ничего больше.

Вместо GLUT вы должны использовать гораздо более мощный GLFW, для которого существуют также отличные привязки Haskell: http://hackage.haskell.org/package/GLFW

1 голос
/ 31 января 2011

Я также советую избегать GLUT. В любом случае, оно довольно ограничено.

Другой вариант, если вы предпочитаете обрабатывать свой собственный цикл основного события, а не использовать обратные вызовы, использует SDL . Да, он предназначен для игр, но он может предоставить вам контекст GL и достаточно хорошо работает для большинства интерактивных приложений OpenGL, которым не нужны стандартные виджеты пользовательского интерфейса. Он предоставляет вам события клавиатуры / мыши, миллисекундные таймеры и некоторые основные функции управления окнами.

KINDA POINTLESS POST-HOC EDIT : Мне сообщили в комментарии, что GLFW также позволяет запускать ваш собственный цикл обработки событий. Посмотрев на это еще раз, я определенно согласен с тем, что GLFW является подходом для большинства вещей, которые не нуждаются в стандартных виджетах пользовательского интерфейса.

1 голос
/ 31 января 2011

Просто чтобы добавить еще одну опцию ...

Когда я сыт по горло GLUT, я переключился на Gtk2Hs .В вики есть пара простых примеров, демонстрирующих GtkGLext.

...