11

我不想使用 GLUT,因为它没有类似 Haskell 的感觉。由于回调,它基本上迫使您使用IORef等。

我考虑过GLFW,这看起来很简单,让我可以在单子中进行游戏循环。但它似乎与不同的硬件有问题,例如,它在我的笔记本电脑上运行良好,但在我的台式机上却不行。在窗户上,纹理消失了。

所以我想过通过SDL进去,但是windows依赖可能有问题,我只是不知道需要哪个DLL。

那么打开 OpenGL 窗口还剩下什么?

4

2 回答 2

14

GLUT,其糟糕的声誉完好无损,是我发现的最好的。

然而,朴实无华的感觉并不是不使用它的好理由。您的级别低于您希望在此处用于项目的抽象。同样,您不应该使用 OpenGL,因为它与命令式思想深深纠缠在一起。

但是 GLUT 和 OpenGL 都很好。关键是在使用它们之前将它们包装成更好的抽象。我已经发布了 hackage 我的 OpenGL 中 2D 图形的包装器graphics-drawingcombinators。我相信还有其他尝试,而且我已经离开图形游戏一段时间了,所以我不再精通最先进的技术。

结束 GLUT 有点困难。IORefs 的功能不亚于IO它本身,并且要在避免IO(和其他命令式构造)的同时表达交互性,您将需要某种形式的FRP。最后,这些 FRP 库将最终将命令式想法包装在它们之下——当您处理为 C 编写的库时,您将无法逃避这一点。无论如何,下面的内容并不重要——所有软件都有电压的电气系统。

无论如何,几年前当我研究时,GLUT 是唯一真正跨平台工作的库。我更喜欢......所有其他人的界面,但每个人都只能在某些受控条件下工作。这是一个主要的限制,如果你不分享它,你可能会尝试别的东西。但是窗口界面是一个很容易包装的薄层,您不需要基于此选择做出任何重大决定。

于 2011-12-08T02:22:55.483 回答
1

如果您说什么在台式机/笔记本电脑上完全不起作用,那就更好了。GLFW 的 C 源代码可用于 Haskell 绑定。它几乎只使用一些基本的特定于平台的 API,仅此而已。

于 2011-12-08T14:28:06.093 回答