がよりelegant-ありブロブを使用して、このためのソリューション:
// assuming `byteArray` came in from the websocket
var texture = new THREE.Texture();
var imageBlob = new Blob([byteArray.buffer], {type: "image/png"});
var url = URL.createObjectUrl(imageBlob);
var image = new Image();
image.src = url;
image.onload = function() {
texture.image = image;
texture.needsUpdate = true;
};
あなたは今、あなたが欲しいwhereeverあなたが使用することができ、適切なURL(blob:http://example.com/$uuid
のようなもの)を持っています。これの大きな利点は、データをbase64に変換するのにかかる時間を節約でき、数百キロバイトの長さのbase64-URL文字列を表示しようとするときにdevtoolsをクラッシュさせないことです。
しかし、もう1つのオプション(残念ながらまだ広くはあまりサポートされていません):createImageBitmap()
です。それで、私は次のように簡単になります:
var texture = new THREE.Texture();
var imageBlob = new Blob([byteArray.buffer], {type: "image/png"});
createImageBitmap(imageBlob).then(function(imageBitmap) {
texture.image = imageBitmap;
texture.needsUpdate = true;
});