我和一个朋友正在使用WebGL开发一个游戏,在寻找了一些物理引擎后,我发现了ammo.js,它是一个端口或子弹头物理库。我们实现了一个简单的例子,并很快发现google Chrome的帧率与Firefox或Safari相比非常可怕。我说的是chrome可以达到10FPS,而firefox可以达到相当稳定的60FPS。
在研究了很多之后,我发现了this的博客,它解释了Chrome库到底有什么问题。(tl;dr: ammo.js使用chrome不鼓励的字典对象)
所以我的问题是:这个库有没有不使用字典的移植?如果不是,那么修改原始的C++项目符号代码并重新移植它是否值得(或者甚至是可行的)?如果前面的选择都不可能,你会推荐javascript中的哪个物理引擎?
我知道这里的选择非常有限,但我认为这是值得的。
谢谢。
发布于 2012-01-11 00:19:52
我怀疑是否有可能将代码移植到JavaScript而不使用对象,因为原始的C++代码是面向对象的。
如果您想在移植之前“修改”项目符号代码,我相信您必须重写它,以便它使用在JavaScript中具有优势的东西:类型化数组。我猜你必须重写大部分代码才能达到这种效果。在这种情况下,直接编写JavaScript会更方便。
除了ammo.js,我没有什么好的推荐给你。然而,cannon.js是一个新启动的项目,当它的代码变得稳定时,它可能会满足您的需求。也许你想为它做点贡献?
另一种方法可能是FireBreath。它是一个浏览器插件开发框架。它可以帮助你创建原生的JavaScript函数。如果Bullet被编译成这样的插件,并且绑定到JavaScript,那么您就有了可以在JavaScript中使用的C++物理引擎。当然,最终用户必须先下载插件。
https://stackoverflow.com/questions/8740629
复制相似问题