为什么rubygame和gosu比纯opengl慢?

时间:2009-11-23 16:07:54

标签: ruby opengl rubygame libgosu

我正在寻找一个好的图形框架来制作一个漂亮的2D游戏。我做了3个非常简单的测试,看看哪个图形Ruby框架在GosuRubygame之间更快。该测试创建1000个“Square”类的实例,使用框架的方法以最简单的方式移动和绘制红色方块。第三个测试是相同的,但在纯OpenGL实现(没有任何框架)。结果如下:

PURE OPENGL(使用ruby-opengl)80Fps: alt text http://grab.by/JTM

GOSU(使用ruby-opengl + gosu)46Fps: alt text http://grab.by/JTC

RUBYGAME(使用ruby-opengl + ruby​​game + rsdl)32Fps: alt text http://grab.by/JTw

为什么纯OpenGL测试和Rubygame或Gosu测试之间有如此大的fps差异? (他们都使用opengl)

这些框架真的可靠还是我应该使用更好的框架? (我不认为自己经历了在纯OpenGL中加载图像声音和字体的整个过程:p)

你有什么看法?

4 个答案:

答案 0 :(得分:5)

当您使用框架时,任何简化和加速开发的框架都会立即导致性能下降。 OpenGL是一个优秀而快速的库,但是当你使用像Ruby这样的高级语言和框架包装它时,你绝对可以期待减速。 OpenGL仍然很快,你的缓慢来自这些框架内部正在发生的任何开销。尽管如此,46 fps似乎并不是太糟糕,但如果你要比你的例子更加强调引擎,你最终可能会得到一个无法播放的游戏。

答案 1 :(得分:2)

我刚刚使用Ruby 1.9.2和Gosu制作了一个方形项目。在我的MacBook Pro上,我能够获得1000平方和60 fps的性能问题。使用eval展开我的对象数组,我以60 fps获得了4000个正方形。 方块具有随机速度并从显示器边缘反弹。

答案 2 :(得分:0)

如果这是使用框架的代价,我想知道实际实现游戏逻辑的代价是什么......我对使用Ruby进行gamedev的希望更快下沉。

答案 3 :(得分:0)

您使用的是YARV吗?你应该尝试一种替代的ruby实现,比如jruby或rubinius。