Haskell OpenGL не открывается в Ubuntu - PullRequest
1 голос
/ 30 сентября 2011

Это немного странно, но я начну с самого начала:

Насколько я понял, существует три способа открыть окно OpenGL в Haskell: GLUT, GLFW и SDL.Я вообще не хочу использовать GLUT, потому что он заставляет вас использовать IORef s и в основном работать только в монаде IO.Поэтому я попробовал 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 Ответ

3 голосов
/ 01 октября 2011

Это сообщение об ошибке пытается сообщить вам, что ваша комбинация битовых глубин для цветовых, глубинных и альфа-буферов («визуал GLX») не поддерживается. Чтобы увидеть, какие из них вы можете использовать в своей системе, попробуйте запустить 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
...
...