Ответ 1
GLUT, его плохая репутация неповрежденная и оправданная, - лучшее, что я нашел.
Тем не менее, неубедительное чувство не является хорошей причиной, чтобы не использовать его. Вы находитесь на уровне ниже абстракций, которые вы хотели бы использовать для проекта здесь. Точно так же вы не должны использовать OpenGL, потому что он глубоко запутан с настоятельными идеями.
Но GLUT и OpenGL хороши. Ключ состоит в том, чтобы обернуть их в более привлекательные абстракции перед их использованием. Я опубликовал для взлома мою оболочку для 2D-графики в OpenGL, graphics-drawingcombinators. По-моему, есть и другие попытки, и я некоторое время не встречаюсь с графикой, поэтому я уже не разбираюсь в современном уровне техники.
Завершение работы GLUT немного сложнее. IORef
не менее функциональны, чем IO
, и для выражения интерактивности, избегая IO
(и других императивных конструкций), вам понадобится некоторая форма FRP. В конце концов, эти библиотеки FRP в конечном итоге обернут императивные идеи под ними - когда вы имеете дело с библиотеками, написанными для C, вы не избежите этого. И совсем неважно, что живет в любом случае - все программное обеспечение имеет электрические системы под напряжением внизу.
В любом случае, пару лет назад, когда я изучал, GLUT была единственной библиотекой, которая действительно работала на кросс-платформенной платформе. Я предпочитаю интерфейс... всех остальных, но каждый работает только в определенных контролируемых условиях. Это было основным ограничением, если вы не делитесь им, вы можете попробовать что-то еще. Но оконный интерфейс - это тонкий слой, который довольно легко обернут, вам не нужно принимать какие-либо важные решения по этому выбору.