A few subtle draw performance fixes

By rounding all floated values to whole numbers... we can help a tad
with aliasing and the like
This commit is contained in:
Amadeus Demarzi 2014-07-24 21:37:48 -07:00
parent 9d615b5a25
commit f6cd6434ae
4 changed files with 19 additions and 13 deletions

View File

@ -55,8 +55,8 @@ Engine.Particle.Fixed.prototype = {
// Draw a circle - far less performant
ctx.beginPath();
ctx.arc(
this.pos.x * scale,
this.pos.y * scale,
this.pos.x * scale >> 0,
this.pos.y * scale >> 0,
this.radius * scale,
0,
Math.PI * 2,

View File

@ -135,8 +135,8 @@ Engine.Particle.prototype = {
// Draw a square - very performant
ctx.fillRect(
this.pos.x * scale,
this.pos.y * scale,
this.pos.x * scale >> 0,
this.pos.y * scale >> 0,
this.radius * scale,
this.radius * scale
);

View File

@ -63,16 +63,16 @@ Engine.Polygon.prototype = {
draw: function(ctx, scale){
ctx.beginPath();
ctx.moveTo(
this.a.pos.x * scale,
this.a.pos.y * scale
this.a.pos.x * scale >> 0,
this.a.pos.y * scale >> 0
);
ctx.lineTo(
this.b.pos.x * scale,
this.b.pos.y * scale
this.b.pos.x * scale >> 0,
this.b.pos.y * scale >> 0
);
ctx.lineTo(
this.c.pos.x * scale,
this.c.pos.y * scale
this.c.pos.x * scale >> 0,
this.c.pos.y * scale >> 0
);
ctx.closePath();
ctx.fillStyle = this.fillStyle;

View File

@ -42,20 +42,23 @@ Engine.Shape.prototype = {
selfDestruct: function(time){
this.destruct = time;
this.elapsed = 0;
return this;
},
update: function(engine){
var p;
// if (this.destruct) {
// this.elapsed += engine.tick;
// }
for (p = 0; p < this.points.length; p++) {
this.points[p].update(engine);
// this.points[p].draw(this.context, scale);
}
for (p = 0; p < this.polygons.length; p++) {
this.polygons[p].update(engine);
// this.polygons[p].draw(this.context, scale);
}
return this;
@ -65,7 +68,10 @@ Engine.Shape.prototype = {
var p;
ctx.save();
ctx.translate(this.pos.x * scale, this.pos.y * scale);
ctx.translate(
this.pos.x * scale >> 0,
this.pos.y * scale >> 0
);
for (p = 0; p < this.polygons.length; p++) {
this.polygons[p].draw(ctx, scale);
}