【问题标题】:ammo.js performance in Google Chromeammo.js 在 Google Chrome 中的性能
【发布时间】:2012-02-03 04:00:16
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

  • 你有基准的链接吗?我想把它交给 Chrome V8 团队。

标签: javascript performance webgl physics-engine bulletphysics


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 2020-04-27
    相关资源
    最近更新 更多