Javascript three.js在移动设备上更改纹理崩溃-上下文丢失
我一直在做一个tree.js项目,有一个简单的模型。 我尝试通过更改贴图纹理来更改颜色 在手机上,尤其是iPhone上,WebGL在3-4种颜色(贴图纹理)更改后崩溃。 在PC浏览器上,它工作得很好(尽管如果您以足够快的速度多次更改纹理,它也会崩溃) 请参见此处的模型:(您可以使用右侧的颜色图标BTN更改颜色) 崩溃后我得到的唯一错误是:(在电脑上) webgl:context\u lost\u webgl:losecontext:context lost 模型由6个具有相同贴图的对象构建(每个对象都知道要使用贴图的哪一部分) 我正在使用TextureLoader仅更改其中一个对象的纹理: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个具有相同贴图的对象构建(每个
//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崩溃…:/你知道如何调试这个吗?