【发布时间】:2015-08-12 00:10:05
【问题描述】:
我正在开发 libGDX 并使用 Box2D 在我的游戏中进行简单的 2D 物理交互。但是,最近我发现了一个名为 JBox2D 的库。
这两个库有什么区别吗?各有什么优势?
我知道它们都基于 c++ 的 Box2D 库,因为:
libgdx 中的 Box2D 实现是一个围绕 C++ 引擎的瘦 Java 包装器。
JBox2d 是 C++ 物理引擎 LiquidFun 和 Box2d 的 Java 端口。
但是,端口和包装是什么意思? JBox2D 是否比 Box2D 更完整?哪个更快?
我问这个是因为我想知道将我的项目从一个更改为另一个(在本例中从 Box2D 更改为 JBox2D)是否会影响或优化我的游戏性能。
【问题讨论】:
-
包装意味着它们是一个精简的(本质上是非功能性的)API,这使得从 Java 调用底层 API 变得更容易。它基本上充当 Java 和(可能)本机实现之间的代理。移植是实际代码从 C++ 翻译成 Java 的地方,因此移植后的版本(大概)变成纯 Java,不依赖任何外部本地库
-
这个是不是让端口变慢了?
-
您必须进行基准测试,有时,是的,有时不是。该端口将更容易在多个平台上运行,因为您无需担心确保安装了正确的库,例如,它也不会受到平台(OS)上更新库等问题的影响这可能会导致问题