WebGL渲染器消耗太多内存...每次浏览器崩溃

时间:2015-11-04 09:35:25

标签: three.js

我正在加载具有每个对象几何的JSON文件。如果我加载了200MB的JSON文件,我会消耗大约2.5GB的内存来渲染它,然后浏览器崩溃或者它会给出NS_OUT_OF_MEMORY异常。任何人都可以建议一些解决方案来加载更大的JSON文件吗?

2 个答案:

答案 0 :(得分:0)

200Mb JSON文件是一种在浏览器中使用的文件太大的文件。它最终可能会起作用(取决于最终用户设备),但不是优化的解决方案。

因此,我建议您使用Blender 3D来减少对象的多边形数量,以便至少达到50MB JSON个文件。在这种情况下,您将把工作量减少到四分之一。

http://wiki.blender.org/index.php/Doc:2.4/Manual/Modifiers/Generate/Decimate https://github.com/mrdoob/three.js/tree/master/utils/exporters/blender

编辑:正如您所说,您在给定文件中根本无法访问CAAD程序。也许您可以尝试应用本网页中所述的一些解决方案:

http://goocreate.com/learn/reducing-memory-usage/

答案 1 :(得分:-1)

我确实尝试了所有的dispose和deallocate方法,但没有任何效果。

然后,我为使用webgl渲染器渲染360图像的离子应用程序执行了以下操作。

this.renderer = new THREE.WebGLRenderer({ antialias: true });
RicohView.prototype.stopRendering = function () {
    this.canRender = false;
    this.renderer.forceContextLoss();
    this.renderer.dispose();
    console.log('renderer disposed');
    cancelAnimationFrame(this.requestId);
}

requestId可以从

中捕获
this.requestId = requestAnimationFrame(render);

执行此操作将强制丢失渲染器上下文,并且每次使用新上下文时都会创建新的渲染器。