diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 1122612..05e2200 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -1,11 +1,15 @@ var Container = require('../display/Container'), RenderTexture = require('../textures/RenderTexture'), + Texture = require('../textures/Texture'), GraphicsData = require('./GraphicsData'), Sprite = require('../sprites/Sprite'), math = require('../math'), CONST = require('../const'), bezierCurveTo = require('./utils/bezierCurveTo'), - + CanvasRenderTarget = require('../renderers/canvas/utils/CanvasRenderTarget'), + CanvasRenderer = require('../renderers/canvas/CanvasRenderer'), + canvasRenderer, + tempMatrix = new math.Matrix(), tempPoint = new math.Point(); /** @@ -1009,6 +1013,30 @@ return data; }; +Graphics.prototype.generateCanvasTexture = function(scaleMode, resolution) +{ + resolution = resolution || 1; + + var bounds = this.getLocalBounds(); + + var canvasBuffer = new RenderTexture.create(bounds.width * resolution, bounds.height * resolution); + + if(!canvasRenderer) + { + canvasRenderer = new CanvasRenderer(); + } + + tempMatrix.tx = -bounds.x; + tempMatrix.ty = -bounds.y; + + canvasRenderer.render(this, canvasBuffer, false, tempMatrix); + + var texture = Texture.fromCanvas(canvasBuffer.baseTexture._canvasRenderTarget.canvas, scaleMode); + texture.baseTexture.resolution = resolution; + + return texture; +} + /** * Destroys the Graphics object. */ diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 1122612..05e2200 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -1,11 +1,15 @@ var Container = require('../display/Container'), RenderTexture = require('../textures/RenderTexture'), + Texture = require('../textures/Texture'), GraphicsData = require('./GraphicsData'), Sprite = require('../sprites/Sprite'), math = require('../math'), CONST = require('../const'), bezierCurveTo = require('./utils/bezierCurveTo'), - + CanvasRenderTarget = require('../renderers/canvas/utils/CanvasRenderTarget'), + CanvasRenderer = require('../renderers/canvas/CanvasRenderer'), + canvasRenderer, + tempMatrix = new math.Matrix(), tempPoint = new math.Point(); /** @@ -1009,6 +1013,30 @@ return data; }; +Graphics.prototype.generateCanvasTexture = function(scaleMode, resolution) +{ + resolution = resolution || 1; + + var bounds = this.getLocalBounds(); + + var canvasBuffer = new RenderTexture.create(bounds.width * resolution, bounds.height * resolution); + + if(!canvasRenderer) + { + canvasRenderer = new CanvasRenderer(); + } + + tempMatrix.tx = -bounds.x; + tempMatrix.ty = -bounds.y; + + canvasRenderer.render(this, canvasBuffer, false, tempMatrix); + + var texture = Texture.fromCanvas(canvasBuffer.baseTexture._canvasRenderTarget.canvas, scaleMode); + texture.baseTexture.resolution = resolution; + + return texture; +} + /** * Destroys the Graphics object. */ diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 2c2bb10..e3f56e4 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -119,9 +119,10 @@ if(renderTexture) { renderTexture = renderTexture.baseTexture || renderTexture; - + if(!renderTexture._canvasRenderTarget) { + renderTexture._canvasRenderTarget = new CanvasRenderTarget(renderTexture.width, renderTexture.height, renderTexture.resolution); renderTexture.source = renderTexture._canvasRenderTarget.canvas; renderTexture.valid = true; diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 1122612..05e2200 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -1,11 +1,15 @@ var Container = require('../display/Container'), RenderTexture = require('../textures/RenderTexture'), + Texture = require('../textures/Texture'), GraphicsData = require('./GraphicsData'), Sprite = require('../sprites/Sprite'), math = require('../math'), CONST = require('../const'), bezierCurveTo = require('./utils/bezierCurveTo'), - + CanvasRenderTarget = require('../renderers/canvas/utils/CanvasRenderTarget'), + CanvasRenderer = require('../renderers/canvas/CanvasRenderer'), + canvasRenderer, + tempMatrix = new math.Matrix(), tempPoint = new math.Point(); /** @@ -1009,6 +1013,30 @@ return data; }; +Graphics.prototype.generateCanvasTexture = function(scaleMode, resolution) +{ + resolution = resolution || 1; + + var bounds = this.getLocalBounds(); + + var canvasBuffer = new RenderTexture.create(bounds.width * resolution, bounds.height * resolution); + + if(!canvasRenderer) + { + canvasRenderer = new CanvasRenderer(); + } + + tempMatrix.tx = -bounds.x; + tempMatrix.ty = -bounds.y; + + canvasRenderer.render(this, canvasBuffer, false, tempMatrix); + + var texture = Texture.fromCanvas(canvasBuffer.baseTexture._canvasRenderTarget.canvas, scaleMode); + texture.baseTexture.resolution = resolution; + + return texture; +} + /** * Destroys the Graphics object. */ diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 2c2bb10..e3f56e4 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -119,9 +119,10 @@ if(renderTexture) { renderTexture = renderTexture.baseTexture || renderTexture; - + if(!renderTexture._canvasRenderTarget) { + renderTexture._canvasRenderTarget = new CanvasRenderTarget(renderTexture.width, renderTexture.height, renderTexture.resolution); renderTexture.source = renderTexture._canvasRenderTarget.canvas; renderTexture.valid = true; diff --git a/src/core/sprites/webgl/SpriteRenderer.js b/src/core/sprites/webgl/SpriteRenderer.js index 2f4cd1f..6a60846 100644 --- a/src/core/sprites/webgl/SpriteRenderer.js +++ b/src/core/sprites/webgl/SpriteRenderer.js @@ -81,7 +81,7 @@ this.vertexBuffers = []; this.vaos = []; - this.vaoMax = 10 + this.vaoMax = 20; this.vertexCount = 0; } diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 1122612..05e2200 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -1,11 +1,15 @@ var Container = require('../display/Container'), RenderTexture = require('../textures/RenderTexture'), + Texture = require('../textures/Texture'), GraphicsData = require('./GraphicsData'), Sprite = require('../sprites/Sprite'), math = require('../math'), CONST = require('../const'), bezierCurveTo = require('./utils/bezierCurveTo'), - + CanvasRenderTarget = require('../renderers/canvas/utils/CanvasRenderTarget'), + CanvasRenderer = require('../renderers/canvas/CanvasRenderer'), + canvasRenderer, + tempMatrix = new math.Matrix(), tempPoint = new math.Point(); /** @@ -1009,6 +1013,30 @@ return data; }; +Graphics.prototype.generateCanvasTexture = function(scaleMode, resolution) +{ + resolution = resolution || 1; + + var bounds = this.getLocalBounds(); + + var canvasBuffer = new RenderTexture.create(bounds.width * resolution, bounds.height * resolution); + + if(!canvasRenderer) + { + canvasRenderer = new CanvasRenderer(); + } + + tempMatrix.tx = -bounds.x; + tempMatrix.ty = -bounds.y; + + canvasRenderer.render(this, canvasBuffer, false, tempMatrix); + + var texture = Texture.fromCanvas(canvasBuffer.baseTexture._canvasRenderTarget.canvas, scaleMode); + texture.baseTexture.resolution = resolution; + + return texture; +} + /** * Destroys the Graphics object. */ diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 2c2bb10..e3f56e4 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -119,9 +119,10 @@ if(renderTexture) { renderTexture = renderTexture.baseTexture || renderTexture; - + if(!renderTexture._canvasRenderTarget) { + renderTexture._canvasRenderTarget = new CanvasRenderTarget(renderTexture.width, renderTexture.height, renderTexture.resolution); renderTexture.source = renderTexture._canvasRenderTarget.canvas; renderTexture.valid = true; diff --git a/src/core/sprites/webgl/SpriteRenderer.js b/src/core/sprites/webgl/SpriteRenderer.js index 2f4cd1f..6a60846 100644 --- a/src/core/sprites/webgl/SpriteRenderer.js +++ b/src/core/sprites/webgl/SpriteRenderer.js @@ -81,7 +81,7 @@ this.vertexBuffers = []; this.vaos = []; - this.vaoMax = 10 + this.vaoMax = 20; this.vertexCount = 0; } diff --git a/src/core/textures/BaseRenderTexture.js b/src/core/textures/BaseRenderTexture.js index db8d2d8..9909cf5 100644 --- a/src/core/textures/BaseRenderTexture.js +++ b/src/core/textures/BaseRenderTexture.js @@ -65,7 +65,6 @@ * * @member {PIXI.CanvasRenderer|PIXI.WebGLRenderer} */ - this.renderer = renderer; /** * @member {boolean} diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 1122612..05e2200 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -1,11 +1,15 @@ var Container = require('../display/Container'), RenderTexture = require('../textures/RenderTexture'), + Texture = require('../textures/Texture'), GraphicsData = require('./GraphicsData'), Sprite = require('../sprites/Sprite'), math = require('../math'), CONST = require('../const'), bezierCurveTo = require('./utils/bezierCurveTo'), - + CanvasRenderTarget = require('../renderers/canvas/utils/CanvasRenderTarget'), + CanvasRenderer = require('../renderers/canvas/CanvasRenderer'), + canvasRenderer, + tempMatrix = new math.Matrix(), tempPoint = new math.Point(); /** @@ -1009,6 +1013,30 @@ return data; }; +Graphics.prototype.generateCanvasTexture = function(scaleMode, resolution) +{ + resolution = resolution || 1; + + var bounds = this.getLocalBounds(); + + var canvasBuffer = new RenderTexture.create(bounds.width * resolution, bounds.height * resolution); + + if(!canvasRenderer) + { + canvasRenderer = new CanvasRenderer(); + } + + tempMatrix.tx = -bounds.x; + tempMatrix.ty = -bounds.y; + + canvasRenderer.render(this, canvasBuffer, false, tempMatrix); + + var texture = Texture.fromCanvas(canvasBuffer.baseTexture._canvasRenderTarget.canvas, scaleMode); + texture.baseTexture.resolution = resolution; + + return texture; +} + /** * Destroys the Graphics object. */ diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 2c2bb10..e3f56e4 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -119,9 +119,10 @@ if(renderTexture) { renderTexture = renderTexture.baseTexture || renderTexture; - + if(!renderTexture._canvasRenderTarget) { + renderTexture._canvasRenderTarget = new CanvasRenderTarget(renderTexture.width, renderTexture.height, renderTexture.resolution); renderTexture.source = renderTexture._canvasRenderTarget.canvas; renderTexture.valid = true; diff --git a/src/core/sprites/webgl/SpriteRenderer.js b/src/core/sprites/webgl/SpriteRenderer.js index 2f4cd1f..6a60846 100644 --- a/src/core/sprites/webgl/SpriteRenderer.js +++ b/src/core/sprites/webgl/SpriteRenderer.js @@ -81,7 +81,7 @@ this.vertexBuffers = []; this.vaos = []; - this.vaoMax = 10 + this.vaoMax = 20; this.vertexCount = 0; } diff --git a/src/core/textures/BaseRenderTexture.js b/src/core/textures/BaseRenderTexture.js index db8d2d8..9909cf5 100644 --- a/src/core/textures/BaseRenderTexture.js +++ b/src/core/textures/BaseRenderTexture.js @@ -65,7 +65,6 @@ * * @member {PIXI.CanvasRenderer|PIXI.WebGLRenderer} */ - this.renderer = renderer; /** * @member {boolean} diff --git a/src/deprecation.js b/src/deprecation.js index d3acd36..63185ea 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -233,6 +233,14 @@ console.warn('generateTexture has moved to the renderer, please use renderer.generateTexture(displayObject)'); }; + +core.Graphics.prototype.generateTexture = function(scaleMode, resolution) +{ + console.warn('graphics generate texture has moved to the renderer. Or to render a graphics to a texture using canvas please use generateCanvasTexture'); + + return this.generateCanvasTexture(scaleMode, resolution) +} + core.RenderTexture.prototype.render = function() { //displayObject, matrix, clear, updateTransform @@ -252,6 +260,8 @@ console.warn('setTexture is now deprecated, please use the texture property, e.g : sprite.texture = texture;'); }; + + /** * @method * @name PIXI.extras.BitmapText#setText