123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import { LinearFilter, LinearMipMapLinearFilter, ClampToEdgeWrapping } from '../constants';
- import { FileLoader } from './FileLoader';
- import { DataTexture } from '../textures/DataTexture';
- import { DefaultLoadingManager } from './LoadingManager';
- /**
- * @author Nikos M. / https://github.com/foo123/
- *
- * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)
- */
- var DataTextureLoader = BinaryTextureLoader;
- function BinaryTextureLoader( manager ) {
- this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;
- // override in sub classes
- this._parser = null;
- }
- Object.assign( BinaryTextureLoader.prototype, {
- load: function ( url, onLoad, onProgress, onError ) {
- var scope = this;
- var texture = new DataTexture();
- var loader = new FileLoader( this.manager );
- loader.setResponseType( 'arraybuffer' );
- loader.load( url, function ( buffer ) {
- var texData = scope._parser( buffer );
- if ( ! texData ) return;
- if ( undefined !== texData.image ) {
- texture.image = texData.image;
- } else if ( undefined !== texData.data ) {
- texture.image.width = texData.width;
- texture.image.height = texData.height;
- texture.image.data = texData.data;
- }
- texture.wrapS = undefined !== texData.wrapS ? texData.wrapS : ClampToEdgeWrapping;
- texture.wrapT = undefined !== texData.wrapT ? texData.wrapT : ClampToEdgeWrapping;
- texture.magFilter = undefined !== texData.magFilter ? texData.magFilter : LinearFilter;
- texture.minFilter = undefined !== texData.minFilter ? texData.minFilter : LinearMipMapLinearFilter;
- texture.anisotropy = undefined !== texData.anisotropy ? texData.anisotropy : 1;
- if ( undefined !== texData.format ) {
- texture.format = texData.format;
- }
- if ( undefined !== texData.type ) {
- texture.type = texData.type;
- }
- if ( undefined !== texData.mipmaps ) {
- texture.mipmaps = texData.mipmaps;
- }
- if ( 1 === texData.mipmapCount ) {
- texture.minFilter = LinearFilter;
- }
- texture.needsUpdate = true;
- if ( onLoad ) onLoad( texture, texData );
- }, onProgress, onError );
- return texture;
- }
- } );
- export { BinaryTextureLoader, DataTextureLoader };
|