在渲染过程中如何检测three.js引发错误?

时间:2019-08-30 17:13:07

标签: error-handling three.js

使用three.js做一些事情时,我注意到了一些限制,具体取决于运行代码的客户端。一个例子是,如果我有很多MeshPhongMaterialLight,然后在低端笔记本电脑/手机上试用,我会得到着色器错误。有时requestAnimationFrame()会完全停止执行,有时我只会遇到此错误(以及WebGL警告)。

我的问题是是否有可能捕获这些错误?使用try-catch进行了一些压力测试脚本,但是即使出现错误和警告之后,也永远不会调用catch

var rendering = function()
{
    lights.push(new THREE.PointLight());
    lights[lights.length-1].position.set((Math.random()*10)-5,(Math.random()*10)-5,(Math.random()*10)-5);
    scene.add(lights[lights.length-1]);
    try
    {
        renderer.render(scene,camera);
    }
    catch(e)
    {
        console.log("Limit!"); // never shown
    }
    requestAnimationFrame(rendering);
}

1 个答案:

答案 0 :(得分:1)

console.error = yourFunction() console.warning = yourFunction()

检查其中的消息,并对其进行处理。