【问题标题】:Haskell library for 2D drawing [closed]用于 2D 绘图的 Haskell 库 [关闭]
【发布时间】:2011-08-02 12:03:53
【问题描述】:

我基本上想创建一个全屏窗口并在其上以不同的颜色和大小绘制文本(并且还更新屏幕)。我在 python 中为此使用了 pygame,我正在寻找一个类似的库(应该相当容易使用)。

+1 如果它也处理输入...

【问题讨论】:

  • 感谢所有答案:我将尝试使用 haskgame 和 SDL。
  • 那么,在将近 2 年之后,你选择了什么作为 lib,你做了什么有用的事情,2D Haskell 的一般经验是什么......?
  • @CoR:我使用了来自 hackage 的 SDL 和 SDL-ttf 包,体验很棒:我成功地完成了我想做的事情,而且比我预期的要快得多!而且我的代码少了很多,现在做同样的事情。
  • 谢谢。我即将做同样的 2D 事情,所以很高兴知道 SDL 在现实世界中运行良好 :)

标签: graphics haskell sdl


【解决方案1】:

我不会选择单个库,而是对所有库进行快速概述,如 Graphics section on Hackage 中所列。

基本框架:

OpenGL

GTK

cabal install cairo

QTHaskell

  • 用的比较少,但是用的时候用的特别多。
  • 由于 C++ 问题,未在 Hackage 上找到 here
  • 知名用户:Nikki and the Robots,一款商业游戏。

SDL

cabal install sdl

X11

cabal install X11

古老的 Unix 用户界面。

示例:xmonad

GD

cabal install gd

GD 图形系统。 Package on hackage.

示例:wordcloudsparklines

HOgre

cabal install hogre

绑定到 Ogre 游戏 graphics system

现在,除了这些游戏层之外,还有许多更高级别的框架和工具:

图表

cabal install diagrams

二维矢量图(例如用于数学),基于 cairo。

光泽度

cabal install gloss

2D 图形,非常简单的界面,比较新。请参阅 TomMD 的评论。

Cal3D

cabal install cal3d

绑定到 Cal3D animation package

黑板

cabal install chalkboard

用于生成图像的基于 OpenGL 的组合器,用于教学。

TeaHS

cabal install TeaHS

一个用于创建 2D 游戏的简单库,灵感来自 Ruby library Tea

【讨论】:

  • 我一直忘记黑板已经更新为编译/运行(它被打破了一段时间)。 Gill 等人干得好,感谢您的提醒。
  • 很棒的清单!光泽和图表看起来特别有趣,并且与我想要制作的内容相关。
【解决方案2】:

你可以使用 Qt。这就是跨平台Nikki And The Robots 正在使用的东西。您可以查看他们的源代码并了解他们在做什么。

【讨论】:

    【解决方案3】:

    我建议使用新的Gloss library 作为获得良好结果的简单方法。

    光泽隐藏画简单的痛苦 漂亮数据背后的矢量图形 类型和一些显示功能。 Gloss 下使用 OpenGL 和 GLUT 引擎盖,但你不必担心 关于任何一个。得到一些很酷的东西 不到 10 分钟就出现在屏幕上。

    还有nice examples,如:

    还有一个很好的例子构建flocking simulators

    或者,如果您要处理的是矢量和文本,cairo 顶部的 diagrams 包可以产生非常好的结果。

    【讨论】:

    • Gloss 很简单,但它的功能不完整,超出了教育的预期用途。我在 Gloss 中制作了一个简单的绘图应用程序,发现它的一些错误(损坏的文本位置翻译,至少在 XMonad 中损坏的窗口调整大小,在 Gnome 环境中渲染时 100% 的 CPU 使用,仅举几例)无法显示和翻译图像(例如:PNG、JPG)。最后一个已部分解决,它现在可以显示位图。回顾一下:我发现 Gloss 非常整洁且易于使用,但它需要几天的时间来修复和改进库本身。
    • 对于非常简单的事情可以吗?我想用它来可视化一个简单的roguelike。最重要的是无错误的位图绘制(我将使用瓷砖)。
    【解决方案4】:

    如果您正在寻找专门的游戏库,您可以找到许多选项hereFunGEn 可能是您在这些库中的最佳选择。但是,如果您要做的只是绘制文本并接收输入,那么您的问题似乎表明游戏库有点矫枉过正。在这种情况下,您可能会选择更简单的东西,例如 HOpenGLhsSDL。还列出了其他几个库here

    编辑:经过更多研究,您可能会使用haskgame 做得很好。我自己从未使用过它,但它看起来有一些功能 here 可以完全满足您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-09
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2011-01-26
      相关资源
      最近更新 更多