Haskell OpenGL无法在Ubuntu中打开

时间:2011-09-30 19:44:51

标签: opengl haskell sdl ubuntu-11.04 glfw

这个有点奇怪,但我会从头开始:

据我所知,有三种方法可以在Haskell中打开OpenGL窗口:GLUT,GLFW和SDL。我根本不想使用GLUT,因为它迫使你使用IORef并且基本上只在IO monad中工作。所以我尝试了GLFW,并在我的笔记本电脑上做了一件小事,它将Xubuntu与XFCE桌面系统结合使用。

现在我很开心并将它复制到我的桌面上,这是一个相当新的标准Ubuntu与Unity,并且惊讶地看不到任何东西。在打开窗口之前,在笔记本电脑上运行良好的GLFW代码完全被无限循环捕获。

然后我将它全部移植到SDL。相同的代码,相同的窗口和SDL与

崩溃
Main.hs: user error (SDL_SetVideoMode
SDL message: Couldn't find matching GLX visual)

我已使用SDLgears检查,使用相同的方法打开一个窗口,它运行正常。与其他一些3D应用程序相同,OpenGL启用正常。

令我感到困惑的是,它在一个XUbuntu下运行,但在Ubuntu上运行。我在这里错过了什么吗?哦,如果它有帮助,窗口打开功能:

runGame w h (Game g) = withInit [InitVideo] $ do
    glSetAttribute glRedSize 8
    glSetAttribute glGreenSize 8
    glSetAttribute glBlueSize 8
    glSetAttribute glAlphaSize 8
    glSetAttribute glDepthSize 16
    glSetAttribute glDoubleBuffer 1

    _ <- setVideoMode w h 32 [OpenGL, Resizable]

    matrixMode $= Projection
    loadIdentity
    perspective 45 (fromIntegral w / fromIntegral h) 0.1 10500.0
    matrixMode $= Modelview 0
    loadIdentity

    shadeModel $= Smooth
    hint PerspectiveCorrection $= Nicest

    depthFunc $= Just Lequal
    clearDepth $= 1.0

    g

1 个答案:

答案 0 :(得分:3)

此错误消息试图告诉您不支持颜色,深度和Alpha缓冲区(“GLX visual”)的位深度组合。要查看您可以在系统上使用哪些系统,请尝试运行glxinfo

$ glxinfo
...

65 GLX Visuals
    visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
  id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------------
0x023 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 None
0x024 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 None
0x025 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 None
0x026 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  0 16 16 16 16  0 0 None
0x027 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
...