3

我和一个朋友正在使用 WebGL 开发游戏,在寻找一些物理引擎后,我发现了 ammo.js,它是一个端口或子弹物理库。我们实现了一个简单的例子,很快发现谷歌 Chrome 的帧率与 Firefox 或 Safari 相比非常糟糕。我说的是 chrome 获得了 10 FPS,而 firefox 获得了相当稳定的 60 FPS。

经过大量研究后,我发现这个博客确切地解释了 Chrome 与图书馆的问题。(tl;dr:ammo.js 使用 chrome 不鼓励的字典对象)

所以我的问题是:这个库有没有不使用字典的端口?如果没有,是否值得(甚至可行)修改原始 C++ 项目符号代码并重新移植它?如果前面的选项都不可能,你会推荐什么 javascript 物理引擎?

我知道这里的选择非常有限,但我认为这是值得的问题。

谢谢。

4

1 回答 1

3

当原始的 C++ 代码是面向对象的时,我怀疑是否可以将代码移植到 JavaScript 而不使用对象。

如果你想在移植之前“修改” Bullet 代码,我相信你必须重写它,以便它使用在 JavaScript 中具有优势的东西:类型化数组。我想你必须重写大部分代码才能做到这一点。在这种情况下,直接编写 JavaScript 会更方便。

除了 ammo.js,我没有给你任何好的建议。但是,cannon.js是一个新启动的项目,当它的代码稳定时,它可能会满足您的需求。也许您想为此做出贡献?

另一种方法可能是FireBreath。它是一个浏览器插件开发框架。它可以帮助您制作原生 JavaScript 函数。如果 Bullet 被编译到这样的插件中,并且绑定到 JavaScript,那么你的 C++ 物理引擎就可以在 JavaScript 中使用了。当然,最终用户必须先下载插件。

于 2012-01-10T16:19:51.923 回答