Haskell openGL и GLUT зависают в Mac OS X? Могу ли я использовать GLFW вместо GLUT?

Я пытаюсь сделать графику в Haskell и использую учебник Haskell.org (http://www.haskell.org/haskellwiki/OpenGLTutorial1). Однако, когда я пытаюсь выполнить следующий код (этот код был взят НЕПОСРЕДСТВЕННО из связанного учебника выше):

import Graphics.UI.GLUT

main :: IO ()
main = do
  (_progName, _args) <- getArgsAndInitialize
  _window <- createWindow "Hello World"
  displayCallback $= display
  mainLoop

display :: DisplayCallback
display = do
  clear [ ColorBuffer ]
  flush

Все успешно компилируется, но при фактическом запуске «основного» открывается белое окно ghc и сразу же зависает. Я пытался использовать другой код из этого руководства, но безрезультатно. Я использую OS X 10.8.5 и использую EclipseFP. Это проблема только MAC?


person IntegrateAllDay    schedule 08.01.2014    source источник
comment
Вы пробовали простой тест OpenGL, написанный на C?   -  person leftaroundabout    schedule 09.01.2014
comment
Это происходит в ghci или при запуске ghc --make?   -  person user2407038    schedule 09.01.2014
comment
Я написал OpenGL на Java, и это прекрасно работает. Это происходит в ghci, user.   -  person IntegrateAllDay    schedule 10.01.2014


Ответы (2)


Чтобы ответить на вторую часть вашего вопроса: существует нерешенная проблема с GLFW (по крайней мере, GLFW-b) в OS X с GHC 7.6.3. См. этот выпуск GitHub:
https://github.com/bsl/bindings-GLFW/issues/8

Учитывая комментарии к этой проблеме, кажется, что проблема будет решена после выпуска GHC 7.8.

Лично я В настоящее время я нахожусь в той же лодке, что и вы, ищу ЛЮБУЮ привязку OpenGL Haskell, которая работает под OS X!

Обновление: я обнаружил, что GLUT работает для меня, если я сначала компилирую с помощью ghc, а затем запускаю, а не пытаюсь запустить через ghci или runghc. Вы пробовали это?

person lancelet    schedule 27.01.2014
comment
ghci или runhaskell по-прежнему не работают в 7.8, но это исправлено компиляцией. - person jarmond; 05.05.2014

Вы на макбуке? Быстрое хакерское решение — перейти к параметрам «Системные настройки» / «Экономия энергии» и отключить «Автоматическое переключение графики».

Я не знаю, почему это происходит, но это чертовски раздражает. У меня этого не происходит с программой C, например glxgears.

person Amos Robinson    schedule 09.01.2014
comment
У меня 13-дюймовый MacBook Pro, и у меня нет автоматического переключения графики. Есть ли другой способ добиться того же эффекта? Спасибо - person IntegrateAllDay; 09.01.2014
comment
О, я думал, что все MacBook Pro имеют две видеокарты, но, может быть, это только сетчатка? Может, попробуй побегать с +RTS -V0 - person Amos Robinson; 10.01.2014
comment
Только 15-дюймовые ноутбуки MacBook Pro оснащены дискретными графическими картами, а 13-дюймовые модели используют только интегрированные графические чипсеты Intel. - person Trevor Powell; 10.01.2014
comment
Ок, тогда извини. Я думаю, это отличается от того, что у меня есть - person Amos Robinson; 13.01.2014
comment
@TrevorPowell, Тревор, ты знаешь какие-нибудь исправления? Я мельком заглянул в GLFW, но тоже не смог заставить его работать… Спасибо всем, вся ваша помощь очень ценится! - person IntegrateAllDay; 16.01.2014
comment
@user3175426 user3175426 Извините, у меня нет опыта программирования на Haskell, и код, который вы разместили, не похож на собственный код OpenGL, поэтому я не могу использовать свои знания OpenGL, чтобы дать совет. - person Trevor Powell; 17.01.2014
comment
Это решило мою проблему. Используя GHC 7.4.2, установленный cuboid в ноябре 2013 года, пока работает только 3D-приложение Haskell. Сегодня решил поиграть с кодом и обнаружил, что и старый исполняемый файл, и копия, которую я сделал, не будут менять местами буферы рендеринга без изменения размера окна, а затем каждый раз сворачивать его, как и примеры Elerea. Они используют GLFW и OpenGL, а не GLUT. - person Loki Clock; 27.03.2014