4

我对 SDL 和 SFML 进行了大量阅读,毫无疑问,我错过了一些信息或不理解它。这是我收集到的:

  • SDL 目前是标准(最流行)
  • SDL 使用 C 和软件渲染(这很慢?)
  • SDL 嵌入一切?
  • SFML 越来越流行
  • SFML 使用 C++(但具有 C 绑定)并利用硬件加速渲染(快速)
  • SFML 不会嵌入所有内容?

我必须使用 C 和 OpenGL 来完成我想做的事情。我还需要确保程序尽可能便携。然而,它不能很慢。

我该怎么办?

4

3 回答 3

5

当使用带有 SDL 的 OpenGL 时,渲染是由硬件完成的,而不是在软件中完成的。我从未尝试过 SFML,但 SDL 非常简单,是一个成熟的库。用 SDL 编写了一些 OpenGl,我面临的唯一问题是不可能有多个带有 SDL 的窗口。关于可移植性,我的程序可以在 Linux、MacOS 和 Windows 上运行。目前,我没有任何理由切换到另一个库。

于 2011-08-03T16:30:43.797 回答
5

SFML是一个更成熟的库。它运行良好,甚至可能比 Windows、Linux、Mac OS 上的 SDL 更好:

SFML 在 Windows(98、2000、XP、Vista)和 Unix 系统(Linux、Mac OS X)等标准平台上编译。随着库的发展,将添加对更多操作系统的支持。

此外,SFML 从一开始就支持硬件加速,而 SDL 则存在一些疑问。

但是,SDL 现在可以在更多平台上运行,包括移动平台。

并且使用 C 语言您可能无法从 SFML 的所有面向对象的优点中受益。

因此,您应该将 SDL 与 C(或用于移动平台)一起使用,并将 SFML 与 C++ 一起使用。


所以你想做二维的东西?不要用 OpenGL 打破你的头脑,只需使用 SFML!它在内部为 2D 使用 OpenGL 和硬件加速。

于 2011-08-04T15:25:25.870 回答
2

既然您说您必须使用 CI,建议您使用 SDL。当使用带有 SDL 的 OpenGL 时,它将被硬件加速。只有 SDL 2D 图形功能将在软件中,但由于您使用 OpenGL,您不会使用它们在屏幕上绘制任何内容。

SDL 非常便携,SDL 1.3(来自主页上的 svn 或存档)也可以为使用 OpenGL ES 的 Android 编译。

于 2011-08-03T16:42:14.307 回答