Neuzeichnen HTML5-canvas-unglaublich langsam

Ich habe gerade angefangen zu spielen mit dem HTML5-canvas und ich hatte gehofft, ein paar Spiele mit ihm. Jedoch sobald ich begann, Rendern die Koordinaten der Maus, um es, es gemahlen zu einem in der Nähe halt:

http://jsfiddle.net/mnpenner/zHpgV/

Alles, was ich Tat, war render 38 Linien und text, es sollte in der Lage sein, damit umzugehen, nicht?

Mache ich etwas falsch? Ich möchte in der Lage sein zu Rendern mindestens 30 FPS, aber für so etwas würde ich erwarten, dass es in der Lage sein zu ziehen, 1000 mal.

Oder bin ich einfach nur mit dem falschen Werkzeug für den job? Ist WebGL für die Aufgabe? Warum sollte man so viel langsamer als die anderen?

JS:

String.prototype.format = function() {
    var args = arguments;
    return this.replace(/\{(\d+)\}/g, function(m, n) {
        return args[n];
    });
};
var $canvas = $('#canvas');
var c = $canvas[0].getContext('2d');
var scale = 20;
var xMult = $canvas.width() / scale;
var yMult = $canvas.height() / scale;
var mouseX = 0;
var mouseY = 0;
c.scale(xMult, yMult);
c.lineWidth = 1 / scale;
c.font = '1pt Calibri';

function render() {
    c.fillStyle = '#dcb25c';
    c.fillRect(0, 0, scale, scale);
    c.fillStyle = '#544423';
    c.lineCap = 'square';
    for (var i = 0; i <= 19; ++i) {
        var j = 0.5 + i;
        c.moveTo(j, 0.5);
        c.lineTo(j, 19.5);
        c.stroke();
        c.moveTo(0.5, j);
        c.lineTo(19.5, j);
        c.stroke();
    }
    c.fillStyle = '#ffffff';
    c.fillText('{0}, {1}'.format(mouseX, mouseY), 0.5, 1.5);
}
render();
$canvas.mousemove(function(e) {
    mouseX = e.clientX;
    mouseY = e.clientY;
    render();
});

HTML:

<canvas id="canvas" width="570" height="570"></canvas>

InformationsquelleAutor mpen | 2012-06-22
Schreibe einen Kommentar