Three.js: GLTFLoader ImageBitmapLoader overrides loaders for types it can't handle

Created on 25 Jun 2020  ·  3Comments  ·  Source: mrdoob/three.js

Description of the problem

Due to the recently added usage of BitmapLoader in GLFTLoader (https://github.com/mrdoob/three.js/pull/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: https://github.com/mrdoob/three.js/blob/7df06a0e4054247f87a7b5aa555ca97cd6b15662/examples/jsm/loaders/GLTFLoader.js#L2077-L2093

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
  • [x] Dev
  • [x] r118
  • [ ] r117
Browser
  • [ ] All of them
  • [x] Chrome
  • [ ] Firefox
  • [ ] Edge
OS
  • [x] All of them
  • [ ] Windows
  • [ ] macOS
  • [ ] Linux
  • [ ] Android
  • [ ] iOS
Hardware Requirements (graphics card, VR Device, ...)
Bug Loaders

Most helpful comment

@Mugen87 Yes, that does fix the problem for me. Thanks a lot taking care of the bug so fast!

All 3 comments

Same error occurs with one of the official examples when using the glTF-dds extension:

https://threejs.org/examples/webgl_loader_gltf_extensions

@JohannesDeml Can you please check if the linked PR solves your issue? At least I could fix the DDS example with it^^.

@Mugen87 Yes, that does fix the problem for me. Thanks a lot taking care of the bug so fast!

Was this page helpful?
0 / 5 - 0 ratings