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