rubysdl与ruby-sdl-ffi

Jwo*_*sty 3 ruby gem sdl rubygems ffi

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

提前致谢!

小智 11

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

主要区别在于ruby-sdl-ffi是通过FFI(外部函数接口)访问SDL(和相关库)的纯Ruby代码,而rubysdl是用C编写的链接到SDL(和相关库)的扩展.每种方法都有利弊.(显然,我觉得FFI是更好的方法,或者我不打算写ruby-sdl-ffi.)

两个库都提供类似的功能集,但存在一些差异(如下所述).他们都可以用图像,声音/音乐以及键盘,鼠标和/或操纵杆/游戏手柄的用户输入来进行2D游戏.它们也可以与OpenGL(通过ruby-opengl或ffi-opengl)一起使用来创建硬件加速的3D游戏.它们既可以在Windows,MacOS X和Linux(也可能是其他平台)上使用,但是如果使用名为"rsdl"的特殊Ruby解释器包装器,rubysdl仅适用于MacOS X.

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

以下是我将如何总结两个库的优缺点:

红宝石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库的绑定.(与rubysdl相比,它添加了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.
  • 似乎也没有积极开发或维护.