为什么rubygame和gosu比纯opengl慢?

为什么rubygame和gosu比纯opengl慢?,ruby,opengl,rubygame,libgosu,Ruby,Opengl,Rubygame,Libgosu,我正在寻找一个好的图形框架,用Ruby制作一个漂亮的2D游戏。我做了3个非常简单的测试,看看哪个图形Ruby框架在和之间更快。该测试创建了1000个“Square”类的实例,该类使用框架的方法以最简单的方式移动并绘制一个红方块。第三个测试是相同的,但是在纯OpenGL实现中(没有任何框架)。结果如下: 纯OPENGL(使用ruby OPENGL)80Fps: GOSU(使用ruby opengl+GOSU)46Fps: RUBYGAME(使用ruby opengl+RUBYGAME+rsdl

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

纯OPENGL(使用ruby OPENGL)80Fps:

GOSU(使用ruby opengl+GOSU)46Fps:

RUBYGAME(使用ruby opengl+RUBYGAME+rsdl)32Fps:

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

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


您的看法是什么?

当您使用一个框架时,任何简化和加速开发的框架都会立即导致性能损失。OpenGL是一个好的、快速的库,但是当你用一种像Ruby这样的高级语言和框架来包装它的时候,你完全可以期待它会慢下来。OpenGL仍然很快,你的缓慢来自于那些框架中发生的任何事情的开销。尽管如此,46 fps似乎还不算太糟糕,但如果你要比你的示例更强调引擎,你可能最终会得到一个不可玩的游戏。

如果这是使用框架的惩罚,我想知道实际实现游戏逻辑的惩罚是什么。。。我对使用Ruby for gamedev的希望越来越渺茫。

你在使用YARV吗?您应该尝试另一种ruby实现,比如jruby或rubinius。

我刚刚使用ruby 1.9.2和Gosu创建了一个方形项目。在我的MacBook Pro上,我可以获得1000个正方形和60帧的速度,而不会出现性能问题。使用eval展开我的目标阵列,我以每秒60帧的速度得到了4000个正方形。
方块的速度是随机的,会从显示器边缘反弹。

我同意,但差距很大:)有没有更好的框架可以在ruby上实时绘制2d(或3d)图形?框架通常会为您完成大量需要自己完成的工作。因此,您会看到这样的初始速度减慢,但当您开始添加游戏代码时,您可能不会看到进一步的速度减慢,因为它有效地使用框架来完成任务。您想一次在屏幕上移动1000个图像吗?即使你这样做了,你仍然可以获得45 FPS。这一点也不坏。不,我使用的是ruby 1.8.1(mac)。但这似乎是最好的解决方案:也许问题来自Rubygame基于SDL这一事实。