【问题标题】:rubysdl vs. ruby-sdl-ffirubysdl 与 ruby​​-sdl-ffi
【发布时间】:2012-02-25 01:28:32
【问题描述】:

谁能告诉我Ruby gems rubysdlruby-sdl-ffi 之间的区别,比如速度差异?如果是这样,更喜欢哪一个?我想知道我正在写的宝石,Rubydraw(位于here)。

提前致谢!

【问题讨论】:

    标签: ruby rubygems gem sdl ffi


    【解决方案1】:

    我是 ruby​​-sdl-ffi 的作者。这个问题今天引起了我的注意,所以我回答是为了任何仍然好奇的人的利益。

    主要区别在于 ruby​​-sdl-ffi 是纯 Ruby 代码,通过 FFI(外部函数接口)访问 SDL(和相关库),而 ruby​​sdl 是用 C 编写的扩展,链接到 SDL(和相关库) .每种方法都有优点和缺点。 (显然,我觉得 FFI 是更好的方法,否则我不会费心写 ruby​​-sdl-ffi。)

    这两个库都提供了相似的功能集,但存在一些差异(如下所述)。他们都可以使用图像、声音/音乐以及来自键盘、鼠标和/或操纵杆/游戏手柄的用户输入来进行 2D 游戏。它们还可以与 OpenGL 一起使用(通过 ruby​​-opengl 或 ffi-opengl)来创建硬件加速的 3D 游戏。它们都可以在 Windows、MacOS X 和 Linux(可能还有其他平台)上使用,尽管 ruby​​sdl 仅适用于 MacOS X,前提是您使用称为“rsdl”的特殊 Ruby 解释器包装器。

    我没有运行任何严格的基准测试,因此我无法提供有关原始性能的任何确切数据。我的总体印象是 ruby​​sdl 可能具有轻微的性能优势,但它们足够接近,因此在两个库之间进行选择时,性能并不是主要因素。

    我将总结这两个库的优缺点:

    ruby-sdl-ffi

    • 让用户更容易安装 gem。它不需要编译,因此用户不需要安装 C 编译器或工具链。
    • 可与 MRI(“通常的”Ruby 解释器)、JRuby 以及可能的 Rubinius 一起使用。
    • 在 MacOS X 上不需要特殊的解释器。但是,可能需要更新对 MacOS X 的支持才能使其在最新版本的 MacOS X 上完全正常工作。(Apple 一直在改变。)
    • 较低级别的 API,更接近 C 库的镜像。根据您的观点,这可能是好是坏。
    • 目前有 SDL、SDL_gfx、SDL_image、SDL_mixer 和 SDL_ttf 库的绑定。 (与 ruby​​sdl 相比,它添加了 SDL_gfx,但缺少 SGE 和 SMPEG。)为其他库添加绑定非常容易。
    • 不再积极开发或维护。我已经没有时间和兴趣了,但欢迎有人接手,我可以提供指导。
    • 有点实验性,并且有一些粗糙的边缘。

    rubysdl

    • 更加成熟精致,经受住了时间的考验。
    • 更好地支持日语文本输入和呈现。
    • 更高级别、更抽象的 API。
    • 绑定 SDL、SGE、SMPEG、SDL_image、SDL_mixer 和 SDL_ttf 库。
    • 要求用户有一个 C 编译器来安装 gem。这在 Windows 和 MacOS X 上可能会让人头疼。
    • 要求 MacOS X 用户使用特殊的“rsdl”Ruby 解释器运行您的游戏。因此,据我所知,它不适用于 MacOS X 上的 JRuby 或 Rubinius。
    • 似乎也不再积极开发或维护。

    【讨论】:

    • 嗨,John,您对 SDL 和您的 gem 与使用 Gosu 相比有何想法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多