Browse Source

WebGLRenderLists: Clean up.

Mr.doob 5 years ago
parent
commit
62656081fd
2 changed files with 10 additions and 8 deletions
  1. 1 1
      src/renderers/WebGLRenderer.js
  2. 9 7
      src/renderers/webgl/WebGLRenderLists.js

+ 1 - 1
src/renderers/WebGLRenderer.js

@@ -1181,7 +1181,7 @@ function WebGLRenderer( parameters ) {
 
 		projectObject( scene, camera, 0, _this.sortObjects );
 
-		currentRenderList.cleanup();
+		currentRenderList.finish();
 
 		if ( _this.sortObjects === true ) {
 

+ 9 - 7
src/renderers/webgl/WebGLRenderLists.js

@@ -137,20 +137,22 @@ function WebGLRenderList() {
 
 	}
 
-	// remove any dangling references to make sure no memory is leaked
-	// when the count of objects in a scene is reduced
-	function cleanup() {
+	function finish() {
 
-		for ( var i = renderItemsIndex; i < renderItems.length; i ++ ) {
+		// Clear references from inactive renderItems in the list
+
+		for ( var i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {
 
 			var renderItem = renderItems[ i ];
+
 			if ( renderItem.id === null ) break;
+
+			renderItem.id = null;
 			renderItem.object = null;
 			renderItem.geometry = null;
 			renderItem.material = null;
-			renderItem.group = null;
 			renderItem.program = null;
-			renderItem.id = null;
+			renderItem.group = null;
 
 		}
 
@@ -163,7 +165,7 @@ function WebGLRenderList() {
 		init: init,
 		push: push,
 		unshift: unshift,
-		cleanup: cleanup,
+		finish: finish,
 
 		sort: sort
 	};