1

我正在尝试找到一种方法来提高我的纸牌游戏在移动设备上的性能(使用 Cordova 包装)。

该脚本检测 WebGL 是否可用,如果不支持则回退到 Canvas 2d。但我的三星 Galaxy S4 的帧率很低 5-10fps。

是否可以关闭 Physijs?如果不是,我如何重写 Physijs 函数以仅返回 ThreeJS 对象而不是 Physijs 对象?示例:

if(disablePhysics) {
        Physijs.createMaterial(elem,v1,v2) {
            return elem;
        }
    }

一如既往,您的帮助很有价值,谢谢:)

4

1 回答 1

0

如果您想在您的网页上禁用 Physijs 物理模拟,那么您需要做的就是不要scene.simulate()在渲染循环中调用该方法:

function render(){
    if(!disablePhysics){
        scene.simulate();
    }

    renderer.render();
}

创建 Physijs 对象并且不对它们运行任何模拟是安全的。它们继承自 THREEObject3D及其子代,因此如果没有 Physijs 替代品,它们应该或多或少相同。只是每个场景都有一个关联的 worker,而仅仅坐在那里一个线程是没有用的。解决方案实际上很简单:创建一个新对象THREE.Scene并将所有Physijs.Mesh对象转移到它。

结论

因此,当禁用物理时:

  • 不要打电话scene.simulate()
  • 只需正常填充您的 Physijs 场景
  • 您可以将所有Physijs.Mesh对象转移到 aTHREE.Scene而不是将它们保存在 aPhysijs.Scene
于 2016-10-11T21:30:35.010 回答