浏览代码

DRACOLoader: Update module cleanup/examples

Don McCurdy 7 年之前
父节点
当前提交
142e00f97c

+ 15 - 7
examples/js/loaders/draco/DRACOLoader.js

@@ -352,18 +352,26 @@ THREE.DRACOLoader.setDecoderPath = function ( path ) {
 THREE.DRACOLoader.setDecoderConfig = function ( config ) {
 THREE.DRACOLoader.setDecoderConfig = function ( config ) {
   var wasmBinary = THREE.DRACOLoader.decoderConfig.wasmBinary;
   var wasmBinary = THREE.DRACOLoader.decoderConfig.wasmBinary;
   THREE.DRACOLoader.decoderConfig = config || {};
   THREE.DRACOLoader.decoderConfig = config || {};
-  THREE.DRACOLoader.decoderModulePromise = null;
+  THREE.DRACOLoader.releaseDecoderModule();
 
 
   // Reuse WASM binary.
   // Reuse WASM binary.
   if ( wasmBinary ) THREE.DRACOLoader.decoderConfig.wasmBinary = wasmBinary;
   if ( wasmBinary ) THREE.DRACOLoader.decoderConfig.wasmBinary = wasmBinary;
 };
 };
 
 
- /**
-  * Gets WebAssembly or asm.js singleton instance of DracoDecoderModule
-  * after testing for browser support. Returns Promise that resolves when
-  * module is available.
-  * @return {Promise<{decoder: DracoDecoderModule}>}
-  */
+/**
+ * Releases the singleton DracoDecoderModule instance. Module will be recreated
+ * with the next decoding call.
+ */
+THREE.DRACOLoader.releaseDecoderModule = function () {
+  THREE.DRACOLoader.decoderModulePromise = null;
+};
+
+/**
+ * Gets WebAssembly or asm.js singleton instance of DracoDecoderModule
+ * after testing for browser support. Returns Promise that resolves when
+ * module is available.
+ * @return {Promise<{decoder: DracoDecoderModule}>}
+ */
 THREE.DRACOLoader.getDecoderModule = function () {
 THREE.DRACOLoader.getDecoderModule = function () {
   var scope = this;
   var scope = this;
   var path = THREE.DRACOLoader.decoderPath;
   var path = THREE.DRACOLoader.decoderPath;

+ 3 - 0
examples/webgl_loader_draco.html

@@ -90,6 +90,9 @@
 				mesh.receiveShadow = true;
 				mesh.receiveShadow = true;
 				scene.add( mesh );
 				scene.add( mesh );
 
 
+				// Release decoder resources.
+				THREE.DRACOLoader.releaseDecoderModule();
+
 			} );
 			} );
 
 
 			// renderer
 			// renderer

+ 2 - 3
examples/webgl_loader_gltf_extensions.html

@@ -206,9 +206,8 @@
 
 
 				loader = new THREE.GLTFLoader();
 				loader = new THREE.GLTFLoader();
 
 
-				var dracoLoader = new THREE.DRACOLoader();
-				dracoLoader.setDecoderPath( 'js/loaders/draco/' );
-				loader.setDRACOLoader( dracoLoader );
+				THREE.DRACOLoader.setDecoderPath( 'js/loaders/draco/' );
+				loader.setDRACOLoader( new THREE.DRACOLoader() );
 
 
 				for (var i = 0; i < extensionSelect.children.length; i++) {
 				for (var i = 0; i < extensionSelect.children.length; i++) {
 					var child = extensionSelect.children[i];
 					var child = extensionSelect.children[i];