java - JBox2D 和 libGDX Box2D 有什么区别

标签 java libgdx jbox2d

我正在研究 libGDX 并使用 Box2D在我的游戏中进行简单的 2D 物理交互。但是,最近我发现存在一个名为 JBox2D 的库。 .

这两个库有什么区别吗?两者的优势是什么?

我知道它们都是基于 Box2D C++ 库因此:

The Box2D implementation in libgdx is a thin Java wrapper around the C++ engine.


JBox2d is a Java port of the C++ physics engines LiquidFun and Box2d.

但是,端口和包装是什么意思? JBox2D 是否比 Box2D 更完整?哪个更快?

我问这个是因为我想知道将我的项目从一个更改为另一个(在本例中是从 Box2D 更改为 JBox2D)是否会影响或优化我的游戏性能。

最佳答案

正如 MadProgrammer 所说,libgdx box2d 扩展 (gdx-box2d) 是原生 box2d 库的 JNI 包装器。而 JBox2D 库是完全用 Java 编写的端口,不依赖于 native 库。但是,您可能会发现了解 the gdx-box2d extension uses JBox2d 很有趣当无法包装 native 库时在幕后。这只是 GWT 后端的情况。

在大多数情况下(特别是 Android),使用 JNI 包装器而不是 JBox2d 会更快(在 iOS 上也可能更快,因为 RoboVM 需要转换 JBox2D 字节码)。这就是扩展在那些后端使用它的原因。当然这要看实际情况,所以你应该benchmark比较一下才知道实际的区别。

我自己还没有对 gdx-box2d 和 JBox2d 进行基准测试。但我可以根据经验说,与 JBullet Java 端口相比,(3D 物理)gdx-bullet JNI 包装器要快得多。

请注意,gdx-box2d 包含所需的库。它不依赖于平台上任何需要更新的库。您也不必担心确保安装了正确的库。

关于java - JBox2D 和 libGDX Box2D 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31954012/

相关文章:

java - Log4j2 DefaultRolloverStrategy 的 max 属性如何真正起作用?

java - 在java中使用嵌套泛型时出现奇怪的结果

java - 调用 new World() 时出现 UnsatisfiedLinkError

java - JBox2D 碰撞不弹跳

android - 如何检测是否在 jBox2D 中触摸了特定的物体

java - JBox2D Body 曾经存在,现在为空?

java - 在 IE 中打开文件

Java语法: statement in {} after new

java - libGDX 口袋妖怪式移动(移动前转身)

java - 游戏 - 使用带有 openCV 人脸检测的前置摄像头