我正在尝试使用strokeStyle和canvas将一张图片映射到模拟布料的“3D”网格上,我已经将图片包含在内,但它目前作为背景图像而不是随着“布料”的波纹实际流动,即图片在网格流动时是静态的。 这里是jsfiddle,可以自行了解(仅适用于Chrome)。 非常感谢任何帮助。 以下是将图像渲染到背景中的javascript代码,如何防止其作为背景图像呈现,并仅使其填充网格:
function update() {
var img = new Image();
img.src = 'http://free-textures.got3d.com/architectural/free-stone-wall- textures/images/free-stone-wall-texture-002.jpg';
img.onload = function() {
// create pattern
var ptrn = ctx.createPattern(img, 'repeat');
ctx.clearRect(0, 0, canvas.width, canvas.height);
physics.update();
ctx.strokeStyle = ptrn;
ctx.beginPath();
var i = points.length;
while (i--) points[i].draw();
ctx.stroke();
requestAnimFrame(update);
}
}
这是我正在使用的原始codepen。
更新后的fiddle将图像放在update()函数之外:
目前似乎实际填充单元格并将其应用作背景图像。有没有办法阻止它变成背景图像,只将其应用于填充网格?我尝试过这个:ctx.fillStyle = ptrn; 并删除了第260行:
ctx.strokeStyle = ptrn; 但它似乎仅将其显示为黑色网格而非背景图像... 再次感谢您的耐心。
// 创建图案 var ptrn = ctx.createPattern(img,'repeat'); ctx.clearRect(0, 0, canvas.width, canvas.height); physics.update(); ctx.strokeStyle = ptrn; ctx.beginPath(); var i = points.length; while(i--) points[i].draw(); ctx.stroke(); requestAnimFrame(update);
} }这个函数是否处理图像渲染。 - vimes1984