Cannot load webgl texture using "data:image/jpg;base64" style URI. This is forcing me to download texture files explicitly, rather than embed them in my binary buffer.
I am creating a webgl texture using following technique:
var textureBuffer = new Uint8Array(this.modeldataBuffer, sourceImage.data.offset, sourceImage.data.size); var image = new Image(); var binary = ''; for (var i = 0, l = textureBuffer.byteLength; i < l; i++) { binary += String.fromCharCode(textureBuffer[i]); } image.src = "data:image/" + sourceImage.type + ";base64," + window.btoa(binary);
Now use this image to create WebGL texture, which fails and throws following error:
Error: uncaught exception: [Exception... "Failure arg 5 [nsIDOMWebGLRenderingContext.texImage2D]” nsresult: “0×80004005 (NS_ERROR_FAILURE)” location: “JS frame :: loadmodel.js:: line 446″ data: no]
This used to work in FF5, but seems to have been broken in FF6.
Is this intentional (i.e. part of cross-domain security fix) or a bug?
This will force me to download individual textures...much more slower than loading it from a single binary file.
Okulungisiwe
All Replies (1)
I think this is part of the cross-domain security fix for web-gl textures. See cross domain texture