Я пытаюсь добиться перемещения картины внутри холста, но через несколько секунд (или минут) ситуация становится неуправляемой.Оптимизировать движущийся узор на холсте?
canvas = document.querySelector('canvas');
canvas.width = 400;
canvas.height = 240;
ctx = canvas.getContext('2d');
image = new Image();
image.src = 'pattern.png';
t = 0;
update();
function update() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(t, 2*t);
ctx.fillStyle = ctx.createPattern(image, 'repeat');
ctx.rect(0, 0, canvas.width, canvas.height);
ctx.fill();
ctx.restore();
t++;
requestAnimationFrame(update);
}
Вот jsfiddle (предупреждение потребление памяти).
Моя цель - использовать этот холст в качестве текстуры для спрайта THREEjs, непрерывно работающего в сцене. Я не могу анимировать материал спрайтов, играющий с uvOffsets, так как будет 3 или 4 прозрачных шаблона, движущихся в разных направлениях и перекрывающих друг друга. Возможно ли его настроить?
Благодарим вас заблаговременно.
Каков ваш конкретный вопрос? «tweak» может означать что угодно. Кроме того, не лучше ли писать собственный шейдер, а не отправлять холст в материал? – 2pha
Мой вопрос - знать, есть ли лучший способ достичь этого результата. Благодаря этому методу использование процессора становится очень высоким. Через несколько минут (100% -ный процессор в Safari, на последнем MacBook Pro). – xAlien95
Возможный дубликат [Холст HTML5 замедляется с каждым штрихом и очисткой] (http://stackoverflow.com/questions/9558895/html5-canvas-slows-down-with-each-stroke-and-clear) – GameAlchemist