Просмотр исходного кода

PMREMNode: Fix dispose of internal PMREMs. (#33849)

Michael Herzog 2 недель назад
Родитель
Сommit
213697e3d5
1 измененных файлов с 25 добавлено и 0 удалено
  1. 25 0
      src/nodes/pmrem/PMREMNode.js

+ 25 - 0
src/nodes/pmrem/PMREMNode.js

@@ -81,6 +81,31 @@ function _getPMREMFromTexture( texture, renderer, generator ) {
 
 
 		cacheTexture.pmremVersion = texture.pmremVersion;
 		cacheTexture.pmremVersion = texture.pmremVersion;
 
 
+		// add dispose event listener for new PMREMs
+
+		if ( cache.has( texture ) === false ) {
+
+			const onDispose = () => {
+
+				texture.removeEventListener( 'dispose', onDispose );
+
+				const pmrem = cache.get( texture );
+
+				if ( pmrem !== undefined ) {
+
+					pmrem.dispose();
+					cache.delete( texture );
+
+				}
+
+			};
+
+			texture.addEventListener( 'dispose', onDispose );
+
+		}
+
+		//
+
 		cache.set( texture, cacheTexture );
 		cache.set( texture, cacheTexture );
 
 
 	}
 	}

粤ICP备19079148号