首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Haskell中OpenGL+GLUT的Hello World不能在OSX Lion上工作

Haskell中OpenGL+GLUT的Hello World不能在OSX Lion上工作
EN

Stack Overflow用户
提问于 2013-09-08 07:33:54
回答 1查看 519关注 0票数 2

以下程序:

代码语言:javascript
运行
复制
import Graphics.Rendering.OpenGL
import Graphics.UI.GLUT
main = do 
  (progname, _) <- getArgsAndInitialize
  createWindow "Hello World"
  mainLoop

使用以下命令编译:

代码语言:javascript
运行
复制
ghc -package GLUT HelloWorld.hs -o HelloWorld

this教程中所述,无法在OSX Lion上执行,显示以下错误消息:

代码语言:javascript
运行
复制
2013-09-07 20:31:20.372 aff[8561:60b] GLUT Warning: The following is a new check for GLUT 3.0; update your code.
2013-09-07 20:31:20.373 aff[8561:60b] GLUT Fatal Error: redisplay needed for window 1, but no display callback.
EN

Stack Overflow用户

发布于 2013-09-09 17:07:53

首先,我不在OS上,不能重现这个错误(也不能重现警告)。此外,我可能正在使用所有库的不同版本。请注意,操作系统之间的这种差异(不幸的)并不少见。当运行程序时,我得到了它下面像素的副本,就像教程作者所期望的那样。

错误消息状态

代码语言:javascript
运行
复制
redisplay needed for window 1, but no display callback

因此,我猜测您需要注册displayCallback。因此,为了与本教程的下一部分保持一致,我添加了

代码语言:javascript
运行
复制
displayCallback $= clear [ ColorBuffer ]

在主循环之前。然而,它并没有修复像素携带行为。为了解决这个问题,我将其更改为

代码语言:javascript
运行
复制
displayCallback $= (clear [ColorBuffer] >> swapBuffers)

这也会更新屏幕上的缓冲区。

附注:请注意,该教程来自2006年,它可能有一点腐烂。此外,当时OpenGL的最新版本是OpenGL 2.1。

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18678944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档