Skip to content

GLTFLoader ImageBitmapLoader overrides loaders for types it can't handle #19734

@JohannesDeml

Description

@JohannesDeml
Description of the problem

Due to the recently added usage of BitmapLoader in GLFTLoader (#19518), using handlers for specific file formats will be overwritten from the BitmapLoader.

In r117 to support basis textures for gltf files you would just need to add

var basisLoader = new BasisTextureLoader();
basisLoader.setTranscoderPath( 'js/libs/basis/' );
basisLoader.detectSupport( renderer );
THREE.DefaultLoadingManager.addHandler( /\.basis$/, basisLoader );

This is not possible anymore, since the resolve will be overwritten here:

return new Promise( function ( resolve, reject ) {
var onLoad = resolve;
if ( useImageBitmap ) {
onLoad = function ( imageBitmap ) {
resolve( new CanvasTexture( imageBitmap ) );
};
}
loader.load( resolveURL( sourceURI, options.path ), onLoad, undefined, reject );
} );

I'm getting the following error:

THREE.WebGLState: TypeError: Failed to execute 'texImage2D' on 'WebGL2RenderingContext': No function was found that matched the signature provided.
    at Object.texImage2D (three.module.js:21828)
    at uploadTexture (three.module.js:22749)
    at setTexture2D (three.module.js:22274)
    at WebGLTextures.safeSetTexture2D (three.module.js:23169)
    at SingleUniform.setValueT1 [as setValue] (three.module.js:17755)
    at Function.WebGLUniforms.upload (three.module.js:18260)
    at setProgram (three.module.js:26406)
    at WebGLRenderer.renderBufferDirect (three.module.js:25441)
    at renderObject (three.module.js:25994)
    at renderObjects (three.module.js:25966)
Three.js version
  • Dev
  • r118
  • r117
Browser
  • All of them
  • Chrome
  • Firefox
  • Edge
OS
  • All of them
  • Windows
  • macOS
  • Linux
  • Android
  • iOS
Hardware Requirements (graphics card, VR Device, ...)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions