Альтернативы GLUT для Haskell?

Я не хочу использовать GLUT, потому что на нем нет ощущений типа Haskell. Это в основном заставляет вас использовать IORef и т.д. Из-за обратных вызовов.

Я рассмотрел GLFW, который кажется простым и позволяет мне делать игровой цикл в монаде. Но у него, похоже, проблемы с другим оборудованием, например, он отлично работает на моем ноутбуке, но не на моем рабочем столе. А на окнах текстуры исчезают.

Итак, я подумал о том, чтобы пройти через SDL, но может быть проблема с зависимостями окон, я просто не знаю, какая DLL вам нужна.

Итак, что нужно, чтобы открыть окно OpenGL?

Ответ 1

GLUT, его плохая репутация неповрежденная и оправданная, - лучшее, что я нашел.

Тем не менее, неубедительное чувство не является хорошей причиной, чтобы не использовать его. Вы находитесь на уровне ниже абстракций, которые вы хотели бы использовать для проекта здесь. Точно так же вы не должны использовать OpenGL, потому что он глубоко запутан с настоятельными идеями.

Но GLUT и OpenGL хороши. Ключ состоит в том, чтобы обернуть их в более привлекательные абстракции перед их использованием. Я опубликовал для взлома мою оболочку для 2D-графики в OpenGL, graphics-drawingcombinators. По-моему, есть и другие попытки, и я некоторое время не встречаюсь с графикой, поэтому я уже не разбираюсь в современном уровне техники.

Завершение работы GLUT немного сложнее. IORef не менее функциональны, чем IO, и для выражения интерактивности, избегая IO (и других императивных конструкций), вам понадобится некоторая форма FRP. В конце концов, эти библиотеки FRP в конечном итоге обернут императивные идеи под ними - когда вы имеете дело с библиотеками, написанными для C, вы не избежите этого. И совсем неважно, что живет в любом случае - все программное обеспечение имеет электрические системы под напряжением внизу.

В любом случае, пару лет назад, когда я изучал, GLUT была единственной библиотекой, которая действительно работала на кросс-платформенной платформе. Я предпочитаю интерфейс... всех остальных, но каждый работает только в определенных контролируемых условиях. Это было основным ограничением, если вы не делитесь им, вы можете попробовать что-то еще. Но оконный интерфейс - это тонкий слой, который довольно легко обернут, вам не нужно принимать какие-либо важные решения по этому выбору.

Ответ 2

Было бы лучше, если бы вы сказали, что точно не работает на настольном компьютере/ноутбуке. C исходный код для GLFW доступен с привязкой Haskell. Он в значительной степени использует только некоторые базовые API-интерфейсы платформы и что он.