Les salutations,
dans ce morceau de code, pouvons-nous éviter de définir d.crossOrigin lorsque nous avons affaire à une URL de données?
THREE.ImageUtils = {crossOrigin: "",loadTexture: function(a, b, c) {
var d = new Image, e = new THREE.Texture(d, b);
d.onload = function() {
e.needsUpdate = !0;
c && c(this)
};
d.crossOrigin = this.crossOrigin;
d.src = a;
return e
Vous pouvez ajouter un chèque comme celui-ci:
if( a.substr(0,4) != "data" )
d.crossOrigin = this.crossOrigin;
cela fait l'affaire. Sinon, Chrome 17 lance un chargement d'image cross-origin refusé par la politique de partage de ressources cross-origin pour une URL de données.
T.
Hmm ... Je pense que vous ne devriez pas utiliser ImageUtils.loadTexture dans ce cas. Faites simplement ceci:
var image = document.createElement( 'img' );
image.src = dataurl;
var texture = new THREE.Texture( image );
texture.needsUpdate = true;
Fonctionne parfaitement, merci!
@mrdoob , merci pour l'exemple ci-dessus!
Commentaire le plus utile
Hmm ... Je pense que vous ne devriez pas utiliser ImageUtils.loadTexture dans ce cas. Faites simplement ceci: