浏览代码

RoomEnvironment: Add .dispose() method (#24556)

Don McCurdy 2 年之前
父节点
当前提交
5619610a8a
共有 2 个文件被更改,包括 24 次插入0 次删除
  1. 23 0
      examples/jsm/environments/RoomEnvironment.js
  2. 1 0
      examples/webgl_loader_gltf_compressed.html

+ 23 - 0
examples/jsm/environments/RoomEnvironment.js

@@ -108,6 +108,29 @@ class RoomEnvironment extends Scene {
 
 
 	}
 	}
 
 
+	dispose() {
+
+		const resources = new Set();
+
+		this.traverse( ( object ) => {
+
+			if ( object.isMesh ) {
+
+				resources.add( object.geometry );
+				resources.add( object.material );
+
+			}
+
+		} );
+
+		for ( const resource of resources ) {
+
+			resource.dispose();
+
+		}
+
+	}
+
 }
 }
 
 
 function createAreaLightMaterial( intensity ) {
 function createAreaLightMaterial( intensity ) {

+ 1 - 0
examples/webgl_loader_gltf_compressed.html

@@ -65,6 +65,7 @@
 				scene = new THREE.Scene();
 				scene = new THREE.Scene();
 				scene.background = new THREE.Color( 0xbbbbbb );
 				scene.background = new THREE.Color( 0xbbbbbb );
 				scene.environment = pmremGenerator.fromScene( environment ).texture;
 				scene.environment = pmremGenerator.fromScene( environment ).texture;
+				environment.dispose();
 
 
 				const grid = new THREE.GridHelper( 500, 10, 0xffffff, 0xffffff );
 				const grid = new THREE.GridHelper( 500, 10, 0xffffff, 0xffffff );
 				grid.material.opacity = 0.5;
 				grid.material.opacity = 0.5;