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
编译然后运行,而不是尝试通过ghci
或runghc
运行,GLUT 对我有用。你试过吗?
【讨论】:
ghci
或 runhaskell
在 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 程序在 Mac 上出现 Glut 错误