你可能会觉得这很有趣:
http://www.xbitlabs.com/news/video/display/20091001171332_AMD_Nvidia_PhysX_Will_Be_Irrelevant.html
这是有偏见的……它基本上是对 AMD 的采访……但它提出了一些我认为在你的情况下值得考虑的观点。
由于 David Seiler 指出的问题,在未来某个时间切换物理引擎可能是一个巨大/无法克服的问题……特别是如果游戏玩法与物理紧密相关。
因此,如果您现在真的想在引擎中使用硬件加速物理,请选择 Physx,但请注意,当 AMD 在本文中假设的解决方案可用时(它们绝对会,但它们还没有出现),您将面临不愉快的选择:
1)重写你的引擎以使用(插入新的跨平台硬件加速物理引擎的名称),可能会以一种不好的方式改变你的游戏动态
2) 继续只使用 Physx,完全忽略 AMD 用户
3) 尝试让 Physx 在 AMD GPU 上工作 (blech...)
除了大卫使用 CPU 物理引擎作为后备的想法(做两倍的工作并产生 2 个行为不同的引擎)之外,您唯一的其他选择是使用纯 CPU 物理。
然而,随着 OpenCL 之类的东西成为主流,我们可能会看到 ODE/Bullet/kin 开始整合它…… IOW 如果您现在使用 ODE/Bullet/kin 对其进行编码,您可能(可能最终会)“免费”获得 GPU 加速稍后(不更改您的代码)。GPU 版本的行为仍然会略有不同(由于蝴蝶效应和浮点实现的差异,这是一个不可避免的问题),但至少你会让 ODE/Bullet/kin 社区与你合作以缩小差距.
这是我的建议:使用目前只使用 CPU 的开源物理库,并等待它通过 OpenCL、CUDA、ATI 的流语言等使用 GPU。当这种情况发生时,性能会非常快,你会免得自己头疼。