在使用three.js做一些工作时,我注意到了一些限制,这取决于运行代码的客户端。一个例子是,如果我有很多MeshPhongMaterial和Light,并在低端笔记本电脑/手机上试用,我会得到着色器错误。有时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);
}发布于 2019-08-31 01:16:06
console.error = yourFunction() console.warning = yourFunction()
检查其中的消息,并对其执行某些操作。
https://stackoverflow.com/questions/57730815
复制相似问题