2016-04-16 15 views
1

texture.dispose()はr73では機能しませんが、r75ではうまく機能します。 r73でそれを起動して実行するにはどうすればよいですか。Texture Disposeが3つのJSリリース73で機能しない

+0

あなたはこれまでの解決策を見つけましたか?このシナリオでイベントリスナーが動作しないのはなぜですか? – Farside

答えて

0

r77では動作しません。

texture.disposeを使用して()処分は通常onTextureDispose呼び出す必要があります:

function onTextureDispose(event) { 

var texture = event.target; 

texture.removeEventListener('dispose', onTextureDispose); 

deallocateTexture(texture); 

_infoMemory.textures --; 

} 

が、それはしません。そのバグか何かがわからないのですが、テクスチャの割り当てを解除するには、シーンをクリアしている間に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

希望はあなたを助けます。

P.S. webglバッファー、テクスチャーe.t.cをチェックする良いツールです。メモリに常駐するものは、Google Chromeの拡張機能です。 Webglインスペクタhttps://chrome.google.com/webstore/detail/webgl-inspector/ogkcjmbhnfmlnielkjhedpcjomeaghda

関連する問題