From 354b94596cbdb852945d3eab1257fb9b081f666c Mon Sep 17 00:00:00 2001 From: Viktor Lidholt Date: Tue, 4 Aug 2015 10:14:49 -0700 Subject: [PATCH 1/2] Disables anti alias for sprite drawing --- sky/packages/sky/example/game/lib/sprite.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sky/packages/sky/example/game/lib/sprite.dart b/sky/packages/sky/example/game/lib/sprite.dart index d040164eff9..b9d382b4857 100644 --- a/sky/packages/sky/example/game/lib/sprite.dart +++ b/sky/packages/sky/example/game/lib/sprite.dart @@ -29,7 +29,9 @@ class Sprite extends NodeWithSize { /// mySprite.transferMode = TransferMode.plusMode; TransferMode transferMode; - Paint _cachedPaint = new Paint(); + Paint _cachedPaint = new Paint() + ..setFilterQuality(FilterQuality.low) + ..isAntiAlias = false; /// Creates a new sprite from the provided [texture]. /// From 042bbdbae5634fdb4c52817fc82236d4394a1578 Mon Sep 17 00:00:00 2001 From: Viktor Lidholt Date: Tue, 4 Aug 2015 10:16:06 -0700 Subject: [PATCH 2/2] Optimizes texture drawing by removing a canvas.translate call --- .../sky/example/game/lib/texture.dart | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/sky/packages/sky/example/game/lib/texture.dart b/sky/packages/sky/example/game/lib/texture.dart index e8068784bcf..39cc70e0829 100644 --- a/sky/packages/sky/example/game/lib/texture.dart +++ b/sky/packages/sky/example/game/lib/texture.dart @@ -74,17 +74,18 @@ class Texture { } void drawTexture(PaintingCanvas canvas, Point position, Paint paint) { - - // Account for position + // Get drawing position double x = position.x; double y = position.y; - bool translate = (x != 0 || y != 0); - if (translate) { - canvas.translate(x, y); - } // Draw the texture if (rotated) { + // Account for position + bool translate = (x != 0 || y != 0); + if (translate) { + canvas.translate(x, y); + } + // Calculate the rotated frame and spriteSourceSize Size originalFrameSize = frame.size; Rect rotatedFrame = frame.topLeft & new Size(originalFrameSize.height, originalFrameSize.width); @@ -97,14 +98,15 @@ class Texture { canvas.rotate(-math.PI/2.0); canvas.drawImageRect(image, rotatedFrame, rotatedSpriteSourceSize, paint); canvas.rotate(math.PI/2.0); + + // Translate back + if (translate) { + canvas.translate(-x, -y); + } } else { // Draw the sprite - canvas.drawImageRect(image, frame, spriteSourceSize, paint); - } - - // Translate back - if (translate) { - canvas.translate(-x, -y); + Rect dstRect = new Rect.fromLTWH(x + spriteSourceSize.left, y + spriteSourceSize.top, spriteSourceSize.width, spriteSourceSize.height); + canvas.drawImageRect(image, frame, dstRect, paint); } } }