一个简单的、跨平台的C或C++ 2D图形库?

43
如标题所述,我需要一个跨平台的2D图形库,并提供类Basic语言的简单功能;基本上,我只需要以特定颜色绘制像素-我不需要硬件加速或任何3D支持。我找到了几个库,但它们不是跨平台的。有人知道适合我的解决方案吗?
9个回答

47

关于SDL呢?

也许对你的需求来说有点复杂,但它肯定是跨平台的。


SDL确实比Agasa需要的更多,但使用起来应该非常简单。 - Matthew Olenik
2
它只需最少的努力就能运行。sdl-config 存在以及 Debian 预先安装了所有必要的东西,这些都帮了很大的忙。我同意这有点过度,但对于我所需的功能来说足够简单了。非常感谢你的一切! - Agasa

16

我是否有所遗漏,为什么没有人建议使用OpenGL呢? 对于2D,使用它将非常简单。 OP只想要着色像素。 没有比glBegin / glColor / glVertex / glEnd更简单的了。


11
OpenGL不能保证在不同的实现中产生完全相同的像素输出。 - user82238
@user82238 是正确的,但是是否存在这样的硬件加速API呢?https://dev59.com/ClzUa4cB1Zd3GeqP5akO | http://stackoverflow.com/questions/3919307/is-there-a-2d-graphics-api-with-both-pixel-perfect-drawing-and-2d-hardware-accel (例如,允许加速精灵旋转/缩放/混合/ z-order)。 - Ciro Santilli OurBigBook.com
如果他只是在处理RGB像素,没有花哨的灯光等等,我看不出有什么实现会给出完全不同的输出,甚至可能没有任何差异。但是,现在想起来已经过去7.5年了,他可以只是将其“blit”到内存中的“屏幕”,然后使用OpenGL等等将结果简单地投射到屏幕上。 - Jim Buck

15
  • Qt 5:用于跨平台开发桌面和移动应用程序的框架。
  • GTK+:Linux 和 Unix 操作系统中常用的GUI工具包。
  • Cairo:用于创建2D图形的开源矢量绘图库。
  • 还有很多很多...

[没有特定顺序。]但如果您有其他要求,请告诉我们。顺便说一句:我不是在这里发布谷歌查询结果,我已经使用过所有这些工具(以及SDL——我用SDL编写了我的前几个游戏 :)),我认为如果没有一组明确的需求,从列出的工具中进行选择非常困难。


为什么选择Qt 4.2?我认为最新版本的Qt也很好 :) - Emile Vrijdags
我手头有4.2的文档链接 - 所以在帖子中提到了它。 - dirkgently
同意,Qt(4.5)也是一个很好的选择。 - Luke Cardeaux

10

重量级框架:

  • GTK
  • QT
  • WxWidgets

轻量级框架:

  • FLTK
  • Fox
  • Tk
  • Lua IUP
  • Ultimate++
  • dlib

不带GUI部件的绘图框架:

  • SDL
  • Cairo


4

我发现的一个不错的引擎是Angel-Engine。以下是该项目网站提供的信息:

  • 跨平台功能(Windows和Mac)
  • 演员(带有颜色、形状、响应、属性等的游戏对象)
  • 透明纹理
  • “动画”(在定义的时间间隔内进行纹理交换)
  • 刚体物理
    • 聪明的程序员可以使用它进行软体物理
  • 声音
  • 多字体文本呈现
  • 粒子系统
  • 一些基本人工智能(状态机和路径查找)
  • 配置文件处理
  • 日志记录
  • 来自鼠标、键盘或Xbox 360控制器的输入
    • 从配置文件绑定输入
  • Python脚本
    • 游戏内控制台

一些用户(包括我)已经成功地在Linux下编译了它(没有任何主要问题)。


3
我建议使用DISLIN。它是跨平台的,支持多种语言,并且具有非常直观的例程命名。
另外,我注意到没有人提到PLPLOT,它也是跨平台的,支持多种语言...

2
虽然DISLIN看起来非常酷,但值得注意的是,对于非商业用途,每个开发者需要支付180美元的费用。 - dagw
2
@dagw - 你的意思是商业用途吗?它可以免费用于非商业用途。 - Rook

1

0
一个跨平台的 .Net 2D 图形库是 The Little Vector Library,你可以与 Unity 3D(推荐)或 Xamarin 结合使用,例如,在各种平台上创建 2D 图形。

4
这似乎只适用于.NET?提问者要求使用C/C++和跨平台。 - Paul R
2
谢谢,这个答案对我非常有帮助! - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接