فهرست منبع

WebGLRenderer: Deallocate Object when removed from scene graph (no need for object.dispose()). See #5269.

Mr.doob 11 سال پیش
والد
کامیت
2e4800d3fe
3فایلهای تغییر یافته به همراه8 افزوده شده و 11 حذف شده
  1. 0 1
      examples/webgl_test_memory.html
  2. 0 6
      src/core/Object3D.js
  3. 8 4
      src/renderers/WebGLRenderer.js

+ 0 - 1
examples/webgl_test_memory.html

@@ -88,7 +88,6 @@
 
 				// clean up
 
-				mesh.dispose();
 				geometry.dispose();
 				material.dispose();
 				texture.dispose();

+ 0 - 6
src/core/Object3D.js

@@ -706,12 +706,6 @@ THREE.Object3D.prototype = {
 
 		return object;
 
-	},
-
-	dispose: function () {
-
-		this.dispatchEvent( { type: 'dispose' } );
-
 	}
 
 };

+ 8 - 4
src/renderers/WebGLRenderer.js

@@ -513,11 +513,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	// Events
 	
-	var onObjectDispose = function ( event ) {
+	var onObjectRemoved = function ( event ) {
 
 		var object = event.target;
 
-		object.removeEventListener( 'dispose', onObjectDispose );
+		object.removeEventListener( 'removed', onObjectRemoved );
 
 		removeObject( object )
 
@@ -3550,11 +3550,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 		if ( object.__webglInit === undefined ) {
 
 			object.__webglInit = true;
-			object.addEventListener( 'dispose', onObjectDispose );
-
 			object._modelViewMatrix = new THREE.Matrix4();
 			object._normalMatrix = new THREE.Matrix3();
 
+			object.addEventListener( 'removed', onObjectRemoved );
+
 		}
 		
 		var geometry = object.geometry;
@@ -3864,6 +3864,10 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		}
 
+		delete object.__webglInit;
+		delete object._modelViewMatrix;
+		delete object._normalMatrix;
+
 		delete object.__webglActive;
 
 	};