Я хочу создать функцию отмены/повтора на инструменте 3D-графики. хранить текстуры в массиве после каждого розыгрыша, как это:Загрузка текстуры ThreeJS: черная на некоторое время на Firefox
var image3 = mesh.material.map.image;
var testCanvas = image3.getContext('2d').canvas;
var canvasData = testCanvas.toDataURL("image/jpeg");
undoArray[undoArrayCursor] = canvasData;
Чтобы восстановить его, я использую этот код:
var canvasimg = mesh.material.map.image;
var img = new Image();
img.src = srcimg;
var tmpcanvas = document.createElement('canvas');
tmpcanvas.width = canvasimg.width;
tmpcanvas.height = canvasimg.height;
var tmpctx = tmpcanvas.getContext('2d');
tmpctx.drawImage(img,0,0);
var pMap = new THREE.Texture(tmpcanvas);
pMap.flipY = true;
pMap.needsUpdate = true;
pMaterial = new THREE.MeshLambertMaterial({ map:pMap });
mesh.material = pMaterial;
Это работает отлично на Chrome и IE, но не на Firefox , В консоли не появляется сообщение об ошибке/предупреждении. С Firefox есть некоторый король латентности. Отменить/повторить клики случайным образом отображать полные черные или правильные текстуры. Через некоторое время (15-20 с) все текстуры отображаются правильно, когда я выполняю цикл с помощью отмены/повтора. Похоже, для загрузки текстур требуется некоторое время. Я что-то пропустил?
Это прекрасно. Я хотя изображение уже в памяти не нуждалось в загрузке. Виноват. – Minichua
Mind marking как принятый ответ? Это поможет другим с той же проблемой. – Hobbes