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

Merge pull request #20439 from Mugen87/dev44

WebGLCubeMaps: Support Texture.dispose().
Mr.doob 4 лет назад
Родитель
Сommit
b0448e7fdd
1 измененных файлов с 19 добавлено и 0 удалено
  1. 19 0
      src/renderers/webgl/WebGLCubeMaps.js

+ 19 - 0
src/renderers/webgl/WebGLCubeMaps.js

@@ -52,6 +52,8 @@ function WebGLCubeMaps( renderer ) {
 						renderer.setRenderList( currentRenderList );
 						renderer.setRenderState( currentRenderState );
 
+						texture.addEventListener( 'dispose', onTextureDispose );
+
 						return mapTextureMapping( renderTarget.texture, texture.mapping );
 
 					} else {
@@ -72,6 +74,23 @@ function WebGLCubeMaps( renderer ) {
 
 	}
 
+	function onTextureDispose( event ) {
+
+		const texture = event.target;
+
+		texture.removeEventListener( 'dispose', onTextureDispose );
+
+		const cubemap = cubemaps.get( texture );
+
+		if ( cubemap !== undefined ) {
+
+			cubemaps.delete( texture );
+			cubemap.dispose();
+
+		}
+
+	}
+
 	function dispose() {
 
 		cubemaps = new WeakMap();