【问题标题】:Haskell openGL and GLUT freeze on Mac OS X? Can I use GLFW over GLUT?Haskell openGL 和 GLUT 在 Mac OS X 上冻结?我可以在 GLUT 上使用 GLFW 吗?
【发布时间】:2014-01-08 23:21:38
【问题描述】:

我正在尝试在 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

一切都成功编译,但在实际运行“main”时,会打开一个白色的 ghc 窗口并立即冻结。我曾尝试使用本教程中的其他代码,但无济于事。我正在运行 OS X 10.8.5 并使用 EclipseFP。这是唯一的 MAC 问题吗?

【问题讨论】:

  • 您尝试过用 C 编写的简单 OpenGL 测试吗?
  • 这是在 ghci 中发生还是在运行 ghc --make 时发生?
  • 我用 Java 编写了 OpenGL,效果很好。这发生在用户的 ghci 中。

标签: macos opengl haskell glut


【解决方案1】:

回答您问题的第二部分:在带有 GHC 7.6.3 的 OS X 上存在一个未解决的 GLFW(至少 GLFW-b)问题。请参阅此 GitHub 问题:
https://github.com/bsl/bindings-GLFW/issues/8

鉴于该问题上的 cmets,一旦 GHC 7.8 发布,该问题似乎将得到解决。

就个人而言,我目前和你在同一条船上,寻找在 OS X 下工作的任何 OpenGL Haskell 绑定!

更新:我发现如果我先用ghc 编译然后运行,而不是尝试通过ghcirunghc 运行,GLUT 对我有用。你试过吗?

【讨论】:

  • ghcirunhaskell 在 7.8 中仍然无法使用,但编译可以修复它。
【解决方案2】:

您使用的是 MacBook 吗?一个快速的 hacky 修复是转到 System Prefs / Energy Saver 选项并禁用“自动图形切换”。

我不知道为什么会发生这种情况,但这很烦人。使用 C 程序(例如 glxgears)不会发生这种情况。

【讨论】:

  • 我使用的是 13 英寸 MacBook Pro,并且没有自动图形切换功能。有没有其他方法可以达到同样的效果?谢谢
  • 哦,我以为所有 MacBook Pro 都有这两个显卡,但也许只有视网膜?也许尝试使用+RTS -V0...
  • 只有 15 英寸 MacBook Pro 笔记本电脑有独立显卡 -- 13 英寸型号仅使用英特尔集成显卡芯片组。
  • 哦,好的,那么对不起。我想这与我所拥有的不同
  • @TrevorPowell 你知道有什么解决办法吗,特雷弗?我简要地查看了 GLFW,但也无法使其正常工作……谢谢大家,非常感谢您的所有帮助!
猜你喜欢
  • 2011-01-05
  • 1970-01-01
  • 2011-11-04
  • 2020-07-17
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多