Javascript three.js在移动设备上更改纹理崩溃-上下文丢失

Javascript three.js在移动设备上更改纹理崩溃-上下文丢失,javascript,ios,three.js,Javascript,Ios,Three.js,我一直在做一个tree.js项目,有一个简单的模型。 我尝试通过更改贴图纹理来更改颜色 在手机上,尤其是iPhone上,WebGL在3-4种颜色(贴图纹理)更改后崩溃。 在PC浏览器上,它工作得很好(尽管如果您以足够快的速度多次更改纹理,它也会崩溃) 请参见此处的模型:(您可以使用右侧的颜色图标BTN更改颜色) 崩溃后我得到的唯一错误是:(在电脑上) webgl:context\u lost\u webgl:losecontext:context lost 模型由6个具有相同贴图的对象构建(每个

我一直在做一个tree.js项目,有一个简单的模型。 我尝试通过更改贴图纹理来更改颜色

在手机上,尤其是iPhone上,WebGL在3-4种颜色(贴图纹理)更改后崩溃。 在PC浏览器上,它工作得很好(尽管如果您以足够快的速度多次更改纹理,它也会崩溃)

请参见此处的模型:(您可以使用右侧的颜色图标BTN更改颜色)

崩溃后我得到的唯一错误是:(在电脑上)

webgl:context\u lost\u webgl:losecontext:context lost

模型由6个具有相同贴图的对象构建(每个对象都知道要使用贴图的哪一部分)

我正在使用TextureLoader仅更改其中一个对象的纹理:

//g_Body declare on scene load
var g_Body = scene.getObjectByName("Body");

...

var loader = new THREE.TextureLoader();
// load a resource
loader.load(
    // resource URL
    `static/Color/${color}/Combie_Combie_Diffuse.png`,
    // Function when resource is loaded
    function ( texture ) {
      // apply the new texture to the model body map
      g_Body.material.map = texture;
      g_Body.material.needsUpdate = true;
    },
    // Function called when download progresses
    function ( xhr ) {
      console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
    },
    // Function called when download errors
    function ( xhr ) {
      console.log( 'An error happened' );
    }
);

每次纹理加载都会在Gpu Vram(4k rgba)中增加64Mo的使用量。你的内存刚刚用完。处置旧纹理。如何处置旧纹理?我做了
g_Body.material.map.Dispose()和我一起工作!修复了大多数手机上的问题。但是,我们仍然有一些旧ios版本的iPhone崩溃…:/你知道如何调试吗?每次纹理加载都会在Gpu Vram(4k rgba)中增加64Mo的使用量。你的内存刚刚用完。处置旧纹理。如何处置旧纹理?我做了
g_Body.material.map.Dispose()和我一起工作!修复了大多数手机上的问题。但是,我们仍然有一些旧ios版本的iPhone崩溃…:/你知道如何调试这个吗?