JavaScript ctx.fill()和ctx.stroke非常慢

时间:2016-11-13 11:17:47

标签: javascript performance

我知道我现在应该问你“为什么我的代码这么慢”并且给你大量的代码,但我现在有这个问题已经有一个星期了,这真让我感到沮丧。

function drawFront() {
    ctx.beginPath();
    var tempPosition = scene.box.func.calcPos(scene.box.names[i], 0, 0, 0);
    ctx.moveTo(tempPosition.x, tempPosition.y);
    var tempPosition = scene.box.func.calcPos(scene.box.names[i], 1, 0, 0);
    ctx.lineTo(tempPosition.x, tempPosition.y);
    var tempPosition = scene.box.func.calcPos(scene.box.names[i], 1, 1, 0);
    ctx.lineTo(tempPosition.x, tempPosition.y);
    var tempPosition = scene.box.func.calcPos(scene.box.names[i], 0, 1, 0);
    ctx.lineTo(tempPosition.x, tempPosition.y);
    ctx.closePath();
    if (scene.box[scene.box.names[i]].material.useFaces == true){ //this is true
        ctx.fillStyle = scene.box[scene.box.names[i]].material.faces[0].c;
        ctx.fill();
    }
    if (scene.box[scene.box.names[i]].material.grid == true) // this is true
        ctx.stroke();
}

此代码应绘制具有4个角的形状,所有这些角位置均使用scene.box.func.calcPos()函数计算。所有这一切都很好,但随着时间的推移,绘图变得越来越慢,越来越慢。

我的CPU温度逐渐从 40°C 上升到 80°C 以上。
可能是什么原因造成的?

编辑: 这是一个jsfiddle:https://jsfiddle.net/fswxtxyz/ 这是该项目的github页面:https://github.com/Quoteme/Fluchtpunkt3D 非常感谢你的帮助

0 个答案:

没有答案