Haskell openGL 和 GLUT 在 Mac OS X 上冻结?我可以在 GLUT 上使用 GLFW 吗?

Posted

技术标签:

【中文标题】Haskell openGL 和 GLUT 在 Mac OS X 上冻结?我可以在 GLUT 上使用 GLFW 吗?【英文标题】:Haskell openGL and GLUT freeze on Mac OS X? Can I use GLFW over GLUT? 【发布时间】: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 中。 【参考方案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,但也无法使其正常工作……谢谢大家,非常感谢您的所有帮助!

以上是关于Haskell openGL 和 GLUT 在 Mac OS X 上冻结?我可以在 GLUT 上使用 GLFW 吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 Haskell 中使用 OpenGL 渲染 PNG 图像

在Haskell中使用OpenGL渲染PNG图像

使用 Haskell 程序在 Mac 上出现 Glut 错误

具有 haskell GLUT 绑定的透明度/Alpha

Haskell GLUT 库中的 ($=)(美元等于)运算符有啥作用?

OpenGL 绘制纹理