Spaces:
Running
Running
/** | |
* @author mrdoob / http://mrdoob.com/ | |
*/ | |
import { RGBAFormat, RGBFormat } from '../constants.js'; | |
import { ImageLoader } from './ImageLoader.js'; | |
import { Texture } from '../textures/Texture.js'; | |
import { DefaultLoadingManager } from './LoadingManager.js'; | |
function TextureLoader( manager ) { | |
this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; | |
} | |
Object.assign( TextureLoader.prototype, { | |
crossOrigin: 'anonymous', | |
load: function ( url, onLoad, onProgress, onError ) { | |
var texture = new Texture(); | |
var loader = new ImageLoader( this.manager ); | |
loader.setCrossOrigin( this.crossOrigin ); | |
loader.setPath( this.path ); | |
loader.load( url, function ( image ) { | |
texture.image = image; | |
// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB. | |
var isJPEG = url.search( /\.jpe?g($|\?)/i ) > 0 || url.search( /^data\:image\/jpeg/ ) === 0; | |
texture.format = isJPEG ? RGBFormat : RGBAFormat; | |
texture.needsUpdate = true; | |
if ( onLoad !== undefined ) { | |
onLoad( texture ); | |
} | |
}, onProgress, onError ); | |
return texture; | |
}, | |
setCrossOrigin: function ( value ) { | |
this.crossOrigin = value; | |
return this; | |
}, | |
setPath: function ( value ) { | |
this.path = value; | |
return this; | |
} | |
} ); | |
export { TextureLoader }; | |