浏览代码

Add extension init function, fixes for pr comments

Anton Bergman 7 年之前
父节点
当前提交
a7a87674da
共有 1 个文件被更改,包括 18 次插入3 次删除
  1. 18 3
      examples/js/loaders/GLTFLoader.js

+ 18 - 3
examples/js/loaders/GLTFLoader.js

@@ -120,6 +120,7 @@ THREE.GLTFLoader = ( function () {
 				return;
 
 			}
+
 			if ( json.extensionsUsed ) {
 
 				if ( json.extensionsUsed.indexOf( EXTENSIONS.KHR_LIGHTS ) >= 0 ) {
@@ -148,7 +149,7 @@ THREE.GLTFLoader = ( function () {
 
 				if ( json.extensionsUsed.indexOf( EXTENSIONS.MSFT_TEXTURE_DDS ) >= 0 ) {
 
-					extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] = "MSFT_texture_dds";
+					extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] = new GLTFTextureDDSExtension();
 
 				}
 
@@ -233,6 +234,20 @@ THREE.GLTFLoader = ( function () {
 		MSFT_TEXTURE_DDS: 'MSFT_texture_dds'
 	};
 
+	/**
+	 * DDS Texture Extension
+	 *
+	 * Specification: 
+	 * https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds
+	 * 
+	 */
+	function GLTFTextureDDSExtension() {
+
+		this.name = EXTENSIONS.MSFT_TEXTURE_DDS;
+    this.ddsLoader = new THREE.DDSLoader();
+
+	}
+
 	/**
 	 * Lights Extension
 	 *
@@ -1799,6 +1814,7 @@ THREE.GLTFLoader = ( function () {
 		var textureExtensions = textureDef.extensions || {};
 
 		var source;
+
 		if ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) {
 
 			if (!THREE.DDSLoader) {
@@ -1807,7 +1823,6 @@ THREE.GLTFLoader = ( function () {
 
 			}
 
-			var DDSLoader = new THREE.DDSLoader;
 			source = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ];
 
 		} else {
@@ -1842,7 +1857,7 @@ THREE.GLTFLoader = ( function () {
 
 			if ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) {
 
-				loader = DDSLoader;
+				loader = THREE.Loader.Handlers.get( sourceURI ) || parser.extensions[EXTENSIONS.MSFT_TEXTURE_DDS].ddsLoader
 
 			} else {