Browse Source

WebGLRenderer: Refactored deallocateGeometry code as per @MiiBond suggestion in #3566.

Mr.doob 12 years ago
parent
commit
fa8f4878c8
1 changed files with 19 additions and 22 deletions
  1. 19 22
      src/renderers/WebGLRenderer.js

+ 19 - 22
src/renderers/WebGLRenderer.js

@@ -558,9 +558,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 	// Buffer deallocation
 	// Buffer deallocation
 
 
-	var deallocateGeometry = function ( geometry ) {
-
-		geometry.__webglInit = undefined;
+	var deleteBuffers = function ( geometry ) {
 
 
 		if ( geometry.__webglVertexBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglVertexBuffer );
 		if ( geometry.__webglVertexBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglVertexBuffer );
 		if ( geometry.__webglNormalBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglNormalBuffer );
 		if ( geometry.__webglNormalBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglNormalBuffer );
@@ -576,8 +574,23 @@ THREE.WebGLRenderer = function ( parameters ) {
 		if ( geometry.__webglLineBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglLineBuffer );
 		if ( geometry.__webglLineBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglLineBuffer );
 
 
 		if ( geometry.__webglLineDistanceBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglLineDistanceBuffer );
 		if ( geometry.__webglLineDistanceBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglLineDistanceBuffer );
+		// custom attributes
+
+		if ( geometry.__webglCustomAttributesList !== undefined ) {
+
+			for ( var id in geometry.__webglCustomAttributesList ) {
+
+				_gl.deleteBuffer( geometry.__webglCustomAttributesList[ id ].buffer );
+
+			}
+
+		}
+
+	};
+
+	var deallocateGeometry = function ( geometry ) {
 
 
-		// geometry groups
+		geometry.__webglInit = undefined;
 
 
 		if ( geometry.geometryGroups !== undefined ) {
 		if ( geometry.geometryGroups !== undefined ) {
 
 
@@ -605,13 +618,13 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 				}
 				}
 
 
-				deleteCustomAttributesBuffers( geometryGroup );
+				deleteBuffers( geometryGroup );
 
 
 			}
 			}
 
 
 		}
 		}
 
 
-		deleteCustomAttributesBuffers( geometry );
+		deleteBuffers( geometry );
 
 
 	};
 	};
 
 
@@ -723,22 +736,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 	};
 	};
 
 
-	//
-
-	function deleteCustomAttributesBuffers( geometry ) {
-
-		if ( geometry.__webglCustomAttributesList ) {
-
-			for ( var id in geometry.__webglCustomAttributesList ) {
-
-				_gl.deleteBuffer( geometry.__webglCustomAttributesList[ id ].buffer );
-
-			}
-
-		}
-
-	};
-
 	// Buffer initialization
 	// Buffer initialization
 
 
 	function initCustomAttributes ( geometry, object ) {
 	function initCustomAttributes ( geometry, object ) {