CPU 用法:Bullet 与 Box2d 引擎
CPU usage: Bullet vs Box2d engines
我使用 2d 库 jbox2d 已经有一段时间了,最近一直在研究 bullet 3d 物理引擎。
我想知道的是 CPU 典型四核的消耗,比如说 i5(我假设 bullet 是多线程的?)会是什么。
即使在 jbox 中,也很容易产生滞后,甚至完全崩溃处理过多的模拟,我想知道在使用 Bullet 引擎切换到 3d 物理时会损失多少处理能力。
大型免责声明:-
- 我从未对两个物理引擎使用过 multi-thread。
- 我也从来没有用它们创建过相同的应用程序,因为一个是 2D,另一个是 3D。
- 我会根据我过去的记忆来回答,而不是对它们进行基准测试。我承认这不是一个好的做法。
如果我必须模拟大约 100 个物体(JBox2d 中的 2D 矩形,Bullet 中的 3D 立方体):-
- 使用Release模式编译的C++(优化开启)
- Java 使用 Release 模式编译(非调试模式),使用
ctrl+F11
Eclipse
- 计算机未处于压力状态(已打开最小程序)
- 两个物理引擎都没有约束(Box2D 的关节,Bullet 中的 btConstraint)。
- Body是四处散落(有时会相互碰撞),不能堆叠。
- 所有的尸体都离得太远了。粗略地说,都在一个屏幕上。
- 我有一些游戏逻辑,但不是太重。
- C++ 程序以 C++ 风格编写得很好(没有滥用
new/delete
、share_ptr
太多)
- Windows 7 的规格可以玩大多数当前的 PC 游戏 (2017)。
我预计 C++ & Bullet
-程序 运行 比 Java & Box2D
快 :-
3 次(相当保守)- 10 次(常见)。
编辑:-
我刚刚想起几年前在我的旧电脑上的一个真实测试用例。
当我在 JBox2D
中 运行 400 个矩形时,我几乎无法达到 60 fps,物理部分的 10-30% CPU。
但是,我可以在 C++ Bullet
中添加大约 4000 个立方体,并且在 Physic 部分(已配置)我可以获得大约 60 fps 和 10-30% CPU。
(我记下了 10-30%,因为我不记得确切的数字了。)
我使用 2d 库 jbox2d 已经有一段时间了,最近一直在研究 bullet 3d 物理引擎。
我想知道的是 CPU 典型四核的消耗,比如说 i5(我假设 bullet 是多线程的?)会是什么。
即使在 jbox 中,也很容易产生滞后,甚至完全崩溃处理过多的模拟,我想知道在使用 Bullet 引擎切换到 3d 物理时会损失多少处理能力。
大型免责声明:-
- 我从未对两个物理引擎使用过 multi-thread。
- 我也从来没有用它们创建过相同的应用程序,因为一个是 2D,另一个是 3D。
- 我会根据我过去的记忆来回答,而不是对它们进行基准测试。我承认这不是一个好的做法。
如果我必须模拟大约 100 个物体(JBox2d 中的 2D 矩形,Bullet 中的 3D 立方体):-
- 使用Release模式编译的C++(优化开启)
- Java 使用 Release 模式编译(非调试模式),使用
ctrl+F11
Eclipse - 计算机未处于压力状态(已打开最小程序)
- 两个物理引擎都没有约束(Box2D 的关节,Bullet 中的 btConstraint)。
- Body是四处散落(有时会相互碰撞),不能堆叠。
- 所有的尸体都离得太远了。粗略地说,都在一个屏幕上。
- 我有一些游戏逻辑,但不是太重。
- C++ 程序以 C++ 风格编写得很好(没有滥用
new/delete
、share_ptr
太多) - Windows 7 的规格可以玩大多数当前的 PC 游戏 (2017)。
我预计 C++ & Bullet
-程序 运行 比 Java & Box2D
快 :-
3 次(相当保守)- 10 次(常见)。
编辑:-
我刚刚想起几年前在我的旧电脑上的一个真实测试用例。
当我在 JBox2D
中 运行 400 个矩形时,我几乎无法达到 60 fps,物理部分的 10-30% CPU。
但是,我可以在 C++ Bullet
中添加大约 4000 个立方体,并且在 Physic 部分(已配置)我可以获得大约 60 fps 和 10-30% CPU。
(我记下了 10-30%,因为我不记得确切的数字了。)