【发布时间】:2019-03-03 04:39:57
【问题描述】:
我已经阅读了NixOS, Haskell, opengl : problems with building and running openGL programs 和所有其他相应的问题,但我无法让一个简单的 Haskell Gloss 项目(几个月前曾经工作过)工作。
使用 github 项目
尝试以下方法:
$ git clone https://www.github.com/turion/rhine
$ cd rhine/
$ cd rhine-gloss/
$ stack build
$ stack exec rhine-gloss-gears
freeglut (rhine-gloss-gears): ERROR: Internal error <FBConfig with necessary capabilities not found> in function fgOpenWindow
这个项目使用了this answer中解释的stack nix集成,但由于mesa最近被重命名,stack.yaml中的相关部分现在是:
nix:
enable: true
packages: [libGL libGLU freeglut]
从头开始
确保您已安装 cabal、stack 和 nix。然后按照以下命令:
$ mkdir tempgloss
$ cd tempgloss
使用以下内容创建两个文件:
$ cat Main.hs
import Graphics.Gloss
main = display (InWindow "Nice Window" (200, 200) (10, 10)) white (Circle 80)
$ cat stack.yaml
resolver: lts-12.10
nix:
enable: true
packages: [libGL libGLU freeglut]
现在执行:
$ cabal init --is-executable -n --main-is=Main.hs -d gloss -d base -l MIT
[...]
$ stack build
[...]
$ stack exec tempgloss
这里有什么问题?
【问题讨论】:
-
我会一步一步来,因为这里有很多抽象在起作用。您可以运行一些 OGL 诊断并验证 OpenGL 是否确实有效(例如
glxgears)?确认后,尝试运行一个 freeglut 示例。一旦成功,请移至 Haskell。好吧,反正我就是这么做的。 -
@BartekBanachewicz,我不会用 C 编写代码。
-
@BartekBanachewicz,
glxgears按预期工作。 (作为包安装,不是从源代码编译的) -
不管它是如何安装的,如果它工作至少你的驱动程序/设备是好的。下一步将是 freeglut;再次,我建议构建一些简单的测试程序like this one 并运行它。
-
您可以使用github.com/guibou/nixGL 在非 nixos 的发行版上运行任何 nix OpenGL 应用程序。
标签: haskell opengl haskell-stack freeglut nixos