【问题标题】:SDL vs SFML using C when portability matters most? [closed]当可移植性最重要时,使用 C 的 SDL 与 SFML? [关闭]
【发布时间】:2011-10-19 06:27:49
【问题描述】:

我一直在阅读有关 SDL 和 SFML 的大量信息,但无疑错过了一些信息或不理解它。这是我收集到的:

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

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

我该怎么办?

【问题讨论】:

  • 如果您使用 OpenGL 和 SDL,除非您的驱动程序有问题,否则它不会使用软件渲染。
  • 以下是我的建议来源:gpwiki.org/forums/viewtopic.php?p=129157#p129157cplusplus.com/forum/lounge/24975/#msg132778 两者都表明至少 2D 渲染是基于软件而不是硬件。
  • 如果您使用纯 OpenGL 进行 2D,那是无稽之谈。无论哪种方式,除非您的驱动程序损坏,否则它将是硬件。但是,如果您在 2D 中使用非 OpenGL SDL 函数,那肯定是软件。
  • @R.. 将 OpenGl 用于 2D 是有道理的。可以使用 3D 管道来渲染平面图元 - 这将使您受益于硬件加速及其所有美妙的功能。用 CPU 渲染 2D 毫无意义。
  • 抱歉,我的评论在语法上不明确。我指出,如果您谈论的是基于 OpenGL 的 2D 渲染,那么使用 SDL “2D 渲染基于软件”的说法是无稽之谈。我从来没有打算说你不应该将 OpenGL 用于 2D。

标签: c opengl cross-platform sdl sfml


【解决方案1】:

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

【讨论】:

【解决方案2】:

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++ 一起使用。


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

【讨论】:

  • +1 如果适用于 OSX、Windows 经典(不是 Windows 应用商店)和 Linux 的便携方式。 SFML 具有可移植架构,但不支持 Android、iOS 等。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2012-09-28
    • 2011-09-04
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 2021-09-21
    • 2018-05-25
    • 2012-12-07
    相关资源
    最近更新 更多