diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 065c5f4..d91d2b9 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -1,6 +1,7 @@ var utils = require('../utils'), math = require('../math'), CONST = require('../const'), + Container = require('../display/Container'), EventEmitter = require('eventemitter3'); /** @@ -164,7 +165,7 @@ * @member {PIXI.DisplayObject} * @private */ - this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), transform:{worldTransform:new math.Matrix(), updated:true}, worldAlpha:1, children:[]}; + this._tempDisplayObjectParent = new Container(); /** * The last root object that the renderer tried to render. diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 065c5f4..d91d2b9 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -1,6 +1,7 @@ var utils = require('../utils'), math = require('../math'), CONST = require('../const'), + Container = require('../display/Container'), EventEmitter = require('eventemitter3'); /** @@ -164,7 +165,7 @@ * @member {PIXI.DisplayObject} * @private */ - this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), transform:{worldTransform:new math.Matrix(), updated:true}, worldAlpha:1, children:[]}; + this._tempDisplayObjectParent = new Container(); /** * The last root object that the renderer tried to render. diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 7ff72ec..323daa5 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -99,8 +99,8 @@ // initialize the context so it is ready for the managers. this.gl = createContext(this.view, this._contextOptions); - this.gl.id = CONTEXT_UID++; // could pool? - + + this.gl.id = this.CONTEXT_UID = CONTEXT_UID++; this.state = new WebGLState(this.gl); @@ -172,7 +172,7 @@ * * @param object {PIXI.DisplayObject} the object to be rendered */ -WebGLRenderer.prototype.render = function (displayObject, renderTexture, clear, doNotUpdateTransform) +WebGLRenderer.prototype.render = function (displayObject, renderTexture, clear, skipUpdateTransform) { this.emit('prerender'); @@ -184,7 +184,7 @@ this._lastObjectRendered = displayObject; - if(!doNotUpdateTransform) + if(!skipUpdateTransform) { // update the scene graph var cacheParent = displayObject.parent; @@ -193,31 +193,13 @@ displayObject.parent = cacheParent; } - //TODO - do we need renderDisplayObject? - var renderTarget = this.rootRenderTarget; - var clear = clear || this.clearBeforeRender; + this.bindRenderTexture(renderTexture); - // MOVE OUT? - if(renderTexture) - { - var baseTexture = renderTexture.baseTexture; - - if(!baseTexture._glRenderTargets[gl.id]) - { - this.renderTextureManager.updateTexture(baseTexture); - } - - renderTarget = baseTexture._glRenderTargets[gl.id]; - } - - this.bindRenderTarget(renderTarget); - - if(clear) + if( clear || this.clearBeforeRender) { renderTarget.clear(); } - displayObject.renderWebGL(this); this.currentRenderer.flush(); @@ -254,7 +236,6 @@ this.rootRenderTarget.resize(width, height); - if(this._activeRenderTarget === this.rootRenderTarget) { this.rootRenderTarget.activate(); @@ -279,8 +260,25 @@ //TOOD - required? WebGLRenderer.prototype.bindRenderTexture = function (renderTexture) { - //TODO fix this frame.. - this.bindRenderTarget( renderTexture.baseTexture.textureBuffer, renderTexture.frame ); + if(renderTexture) + { + var baseTexture = renderTexture.baseTexture; + + if(!baseTexture._glRenderTargets[gl.id]) + { + this.renderTextureManager.updateTexture(baseTexture); + } + + renderTarget = baseTexture._glRenderTargets[gl.id]; + + renderTarget.setFrame(renderTexture.frame); + } + else + { + renderTarget = this.rootRenderTarget; + } + + this.bindRenderTarget(renderTarget); return this; }