diff --git a/packages/canvas/canvas-graphics/src/CanvasGraphicsRenderer.js b/packages/canvas/canvas-graphics/src/CanvasGraphicsRenderer.js index 6513823..27e9912 100644 --- a/packages/canvas/canvas-graphics/src/CanvasGraphicsRenderer.js +++ b/packages/canvas/canvas-graphics/src/CanvasGraphicsRenderer.js @@ -42,12 +42,6 @@ const transform = graphics.transform.worldTransform; const resolution = renderer.resolution; - // if the tint has changed, set the graphics object to dirty. - if (graphics._prevTint !== graphics.tint) - { - graphics.dirty = true; - } - context.setTransform( transform.a * resolution, transform.b * resolution, @@ -57,10 +51,11 @@ transform.ty * resolution ); - if (graphics.dirty) + // update tint if graphics was dirty + if (graphics.canvasTintDirty !== graphics.dirty + || graphics._prevTint !== graphics.tint) { this.updateGraphicsTint(graphics); - graphics.dirty = false; } renderer.setBlendMode(graphics.blendMode); @@ -225,6 +220,7 @@ updateGraphicsTint(graphics) { graphics._prevTint = graphics.tint; + graphics.canvasTintDirty = graphics.dirty; const tintR = ((graphics.tint >> 16) & 0xFF) / 255; const tintG = ((graphics.tint >> 8) & 0xFF) / 255; diff --git a/packages/canvas/canvas-graphics/src/CanvasGraphicsRenderer.js b/packages/canvas/canvas-graphics/src/CanvasGraphicsRenderer.js index 6513823..27e9912 100644 --- a/packages/canvas/canvas-graphics/src/CanvasGraphicsRenderer.js +++ b/packages/canvas/canvas-graphics/src/CanvasGraphicsRenderer.js @@ -42,12 +42,6 @@ const transform = graphics.transform.worldTransform; const resolution = renderer.resolution; - // if the tint has changed, set the graphics object to dirty. - if (graphics._prevTint !== graphics.tint) - { - graphics.dirty = true; - } - context.setTransform( transform.a * resolution, transform.b * resolution, @@ -57,10 +51,11 @@ transform.ty * resolution ); - if (graphics.dirty) + // update tint if graphics was dirty + if (graphics.canvasTintDirty !== graphics.dirty + || graphics._prevTint !== graphics.tint) { this.updateGraphicsTint(graphics); - graphics.dirty = false; } renderer.setBlendMode(graphics.blendMode); @@ -225,6 +220,7 @@ updateGraphicsTint(graphics) { graphics._prevTint = graphics.tint; + graphics.canvasTintDirty = graphics.dirty; const tintR = ((graphics.tint >> 16) & 0xFF) / 255; const tintG = ((graphics.tint >> 8) & 0xFF) / 255; diff --git a/packages/graphics/src/Graphics.js b/packages/graphics/src/Graphics.js index 30cf8e1..d159916 100644 --- a/packages/graphics/src/Graphics.js +++ b/packages/graphics/src/Graphics.js @@ -871,6 +871,7 @@ this.filling = false; this.boundsDirty = -1; + this.canvasTintDirty = -1; this.dirty++; this.clearDirty++; this.graphicsData.length = 0;