Selaa lähdekoodia

More tweaks to Texture.

Mr.doob 11 vuotta sitten
vanhempi
commit
94125d9ec3

+ 12 - 12
examples/js/loaders/DDSLoader.js

@@ -34,13 +34,13 @@ THREE.DDSLoader.prototype = {
 			var loader = new THREE.XHRLoader();
 			loader.setResponseType( 'arraybuffer' );
 
-			var loadNext = function () {
-
-				loader.load( url[ loaded ], function ( buffer ) {
+			var loadTexture = function ( i ) {
+		
+				loader.load( url[ i ], function ( buffer ) {
 
 					var dds = scope.parse( buffer, true );
 
-					images[ loaded ] = {
+					images[ i ] = {
 						width: dds.width,
 						height: dds.height,
 						format: dds.format,
@@ -49,24 +49,24 @@ THREE.DDSLoader.prototype = {
 
 					loaded += 1;
 
-					if ( loaded === url.length ) {
+					if ( loaded === 6 ) {
 
 						texture.format = dds.format;
 						texture.needsUpdate = true;
 
 						if ( onLoad ) onLoad( texture );
 
-					} else {
-
-						loadNext();
-
 					}
 
 				} );
 
-			};
+			}
 
-			loadNext();
+			for ( var i = 0, il = url.length; i < il; ++ i ) {
+
+				loadTexture( i );
+
+			}
 
 		} else {
 
@@ -344,4 +344,4 @@ THREE.DDSLoader.prototype = {
 
 	}
 
-};
+};

+ 6 - 6
examples/webgl_loader_gltf.html

@@ -123,12 +123,12 @@
 				</div>
 			</div>
 		</div>
-        <script src="../build/three.js"></script>
-        <script src="./js/controls/OrbitControls.js"></script>
-        <script src="./js/loaders/gltf/glTF-parser.js"></script>
-        <script src="./js/loaders/gltf/glTFLoader.js"></script>
-        <script src="./js/loaders/gltf/glTFLoaderUtils.js"></script>
-        <script src="./js/loaders/gltf/glTFAnimation.js"></script>
+        <script src="../build/three.min.js"></script>
+        <script src="js/controls/OrbitControls.js"></script>
+        <script src="js/loaders/gltf/glTF-parser.js"></script>
+        <script src="js/loaders/gltf/glTFLoader.js"></script>
+        <script src="js/loaders/gltf/glTFLoaderUtils.js"></script>
+        <script src="js/loaders/gltf/glTFAnimation.js"></script>
 
         <script>
         	var orbitControls = null;

+ 4 - 1
examples/webgl_materials_cubemap_escher.html

@@ -31,6 +31,7 @@
 		</div>
 
 		<script src="../build/three.min.js"></script>
+		<script src="js/loaders/DDSLoader.js"></script>
 
 		<script src="js/Detector.js"></script>
 		<script src="js/libs/stats.min.js"></script>
@@ -86,7 +87,9 @@
 							 r + "py.dds", r + "ny.dds",
 							 r + "pz.dds", r + "nz.dds" ];
 
-				var textureCube = THREE.ImageUtils.loadCompressedTextureCube( urls );
+				var loader = new THREE.DDSLoader();
+				
+				var textureCube = loader.load( urls );
 				var material = new THREE.MeshBasicMaterial( { color: 0xffffff, envMap: textureCube } )
 				var geometry = new THREE.SphereGeometry( 100, 96, 64 );
 

+ 1 - 1
examples/webgl_materials_texture_compressed.html

@@ -71,7 +71,7 @@
 				*/
 
 				var loader = new THREE.DDSLoader();
-											
+				
 				var map1 = loader.load( 'textures/compressed/disturb_dxt1_nomip.dds' );
 				map1.minFilter = map1.magFilter = THREE.LinearFilter;
 				map1.anisotropy = 4;

+ 30 - 9
src/extras/ImageUtils.js

@@ -38,7 +38,6 @@ THREE.ImageUtils = {
 	loadTextureCube: function ( array, mapping, onLoad, onError ) {
 
 		var images = [];
-		images.loadCount = 0;
 
 		var loader = new THREE.ImageLoader();
 		loader.crossOrigin = this.crossOrigin;
@@ -48,28 +47,50 @@ THREE.ImageUtils = {
 		// no flipping needed for cube textures
 
 		texture.flipY = false;
+		
+		var loaded = 0;
+		
+		var loadTexture = function ( i ) {
+		
+			loader.load( array[ i ], function ( image ) {
 
-		for ( var i = 0, il = array.length; i < il; ++ i ) {
-
-			var cubeImage = loader.load( array[i], function () {
+				texture.images[ i ] = image;
 
-				images.loadCount += 1;
+				loaded += 1;
 
-				if ( images.loadCount === 6 ) {
+				if ( loaded === 6 ) {
 
 					texture.needsUpdate = true;
+
 					if ( onLoad ) onLoad( texture );
 
 				}
 
 			} );
-			
-			images[ i ] = cubeImage;
+
 		}
-		
+
+		for ( var i = 0, il = array.length; i < il; ++ i ) {
+
+			loadTexture( i );
+
+		}
+
 		return texture;
 
 	},
+	
+	loadCompressedTexture: function () {
+	
+		console.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.')
+	
+	},
+	
+	loadCompressedTextureCube: function () {
+	
+		console.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.')
+	
+	},
 
 	getNormalMap: function ( image, depth ) {
 

+ 8 - 3
src/loaders/Loader.js

@@ -138,9 +138,14 @@ THREE.Loader.prototype = {
 						var width = nearest_pow2( image.width );
 						var height = nearest_pow2( image.height );
 
-						texture.image.width = width;
-						texture.image.height = height;
-						texture.image.getContext( '2d' ).drawImage( image, 0, 0, width, height );
+						var canvas = document.createElement( 'canvas' );
+						canvas.width = width;
+						canvas.height = height;
+						
+						var context = canvas.getContext( '2d' );
+						context.drawImage( image, 0, 0, width, height );
+
+						texture.image = canvas;
 
 					} else {
 

+ 2 - 15
src/textures/Texture.js

@@ -35,25 +35,12 @@ THREE.Texture = function ( image, mapping, wrapS, wrapT, magFilter, minFilter, f
 	this.flipY = true;
 	this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)
 
-	this._needsUpdate = true;
+	this._needsUpdate = false;
 	this.onUpdate = null;
 
 };
 
-THREE.Texture.DEFAULT_IMAGE = ( function () {
-
-	var canvas = document.createElement( 'canvas' );
-	canvas.width = 8;
-	canvas.height = 8;
-
-	var context = canvas.getContext( '2d' );
-	context.fillStyle = '#ff0000';
-	context.fillRect( 0, 0, canvas.width, canvas.height );
-
-	return canvas;
-
-}() );
-
+THREE.Texture.DEFAULT_IMAGE = undefined;
 THREE.Texture.DEFAULT_MAPPING = new THREE.UVMapping();
 
 THREE.Texture.prototype = {