Three.js 纹理处理在三个JS版本73中不起作用
texture.dispose()在r73中似乎不起作用,但在r75中效果很好。我应该怎么做才能让它在r73上运行。它在r77中也不起作用 使用texture.dispose()时,dispose通常应调用onTextureDispose:Three.js 纹理处理在三个JS版本73中不起作用,three.js,Three.js,texture.dispose()在r73中似乎不起作用,但在r75中效果很好。我应该怎么做才能让它在r73上运行。它在r77中也不起作用 使用texture.dispose()时,dispose通常应调用onTextureDispose: function onTextureDispose( event ) { var texture = event.target; texture.removeEventListener( 'dispose', onTextureDispose ); d
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();
材质的纹理不会根据文档进行处理
希望这对您有所帮助。它在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();
材质的纹理不会根据文档进行处理
希望这对您有所帮助。到目前为止,您找到了解决方案吗?为什么事件侦听器在这种情况下不工作?到目前为止,您找到了任何解决方案吗?为什么事件侦听器在此场景中不工作?