我不想使用GLUT,因为它没有类似Haskell的感觉。它基本上迫使你使用IORef
等等,因为回调。
我考虑过GLFW
,这看起来很简单,让我在monad中进行游戏循环。但它似乎有不同的硬件问题,例如,它在我的笔记本电脑上工作正常,但在我的桌面上没有。在窗户上,纹理消失了。
所以我想过通过SDL进入,但是Windows依赖项可能存在问题,我只是不知道需要哪个DLL。
那么打开OpenGL窗口还剩下什么呢?
答案 0 :(得分:14)
GLUT,其声誉不佳,完好无损,是我发现的最好的。
但是,不使用它并不是一个好的理由。您的级别低于您希望在此处用于项目的抽象级别。同样,你不应该使用OpenGL,因为它与命令性的想法深深纠缠在一起。
但GLUT和OpenGL 很好。关键是在使用它们之前将它们包装成更好的抽象。我发布了在OpenGL中对我的2D图形包装器进行破解,graphics-drawingcombinators。我相信还有其他尝试,我已经离开了图形游戏一段时间,所以我不再精通最先进的技术。
总结GLUT有点困难。 IORef
与IO
本身的功能相同,并且在避开IO
(以及其他命令式构造)时表达交互性,您将需要某种形式的FRP。最后,这些FRP库将最终包含在它们下面的命令性想法 - 当你处理为C编写的库时,你不会逃避这一点。无论如何,生活在其下的东西是非常不重要的 - 所有软件都有下面的电压系统。
无论如何,几年前我正在研究时,GLUT是唯一真正跨平台工作的图书馆。我更喜欢...... all 的其他界面,但每个界面只能在某些受控条件下工作。这是一个主要的限制,如果你不分享,你可能会尝试其他的东西。但是窗口界面是一个很容易包装的薄层,你不需要根据这个选择作出任何重大决定。
答案 1 :(得分:1)
如果你说台式机/笔记本电脑究竟不起作用,那就更好了。 GLFW的C源代码可与Haskell绑定一起使用。它几乎只使用了一些基于平台的特定API,就是这样。