texture.dispose()似乎在r73中不起作用,但在r75中工作正常。我该怎么做才能在r73上运行它。
答案 0 :(得分:0)
它不适用于r77。
使用texture.dispose()时,dispose通常应调用onTextureDispose:
function onTextureDispose( event ) {
var texture = event.target;
texture.removeEventListener( 'dispose', onTextureDispose );
deallocateTexture( texture );
_infoMemory.textures --;
}
但事实并非如此。不知道它是一个bug还是什么,但是为了解除纹理我必须在我清理场景时做一个material.map.dispose()(所以准备在场景中插入其他纹理)。
例如:
var clearScene = function(){
stopAnimate();
if(scene && scene.children.length>0){
for( var i = scene.children.length - 1; i >= 0; i-- ) {
if( scene.children[i] instanceof THREE.Sprite ){
if( scene.children[i].material.map ) scene.children[i].material.map.dispose();
}
if( scene.children[i] instanceof THREE.Mesh ){
if( scene.children[i].material.map ) scene.children[i].material.map.dispose();
}
scene.children[i].material.dispose();
scene.remove(scene.children[i]);
scene.children.splice(i,1);
}
}
};
注意:仅使用:
scene.children[i].material.dispose();
材料的纹理不会根据文档处理。 http://threejs.org/docs/#Reference/Materials/Material
希望对你有所帮助。