Kaynağa Gözat

Prevented renderer from caching outdated programs.

tschw 10 yıl önce
ebeveyn
işleme
4aa4eeb5c7
1 değiştirilmiş dosya ile 11 ekleme ve 4 silme
  1. 11 4
      src/renderers/WebGLRenderer.js

+ 11 - 4
src/renderers/WebGLRenderer.js

@@ -705,6 +705,15 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 	var deallocateMaterial = function ( material ) {
 	var deallocateMaterial = function ( material ) {
 
 
+		releaseMaterialProgramReference( material );
+
+		properties.delete( material );
+
+	};
+
+
+	function releaseMaterialProgramReference ( material ) {
+
 		var program = properties.get( material ).program.program;
 		var program = properties.get( material ).program.program;
 
 
 		if ( program === undefined ) return;
 		if ( program === undefined ) return;
@@ -752,9 +761,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 		}
 		}
 
 
-		properties.delete( material );
-
-	};
+	}
 
 
 	// Buffer rendering
 	// Buffer rendering
 
 
@@ -1937,7 +1944,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 		} else if ( materialProperties.program.code !== code ) {
 		} else if ( materialProperties.program.code !== code ) {
 
 
 			// changed glsl or parameters
 			// changed glsl or parameters
-			deallocateMaterial( material );
+			releaseMaterialProgramReference( material );
 
 
 		} else if ( shaderID !== undefined ) {
 		} else if ( shaderID !== undefined ) {