diff --git a/src/core/renderers/webgl/TextureManager.js b/src/core/renderers/webgl/TextureManager.js index 9208840..c8330a5 100644 --- a/src/core/renderers/webgl/TextureManager.js +++ b/src/core/renderers/webgl/TextureManager.js @@ -38,7 +38,7 @@ { texture = texture.baseTexture || texture; - var isRenderTexture = !!texture._glRenderTargets; + var isRenderTexture = !!texture._glRenderTargets; if (!texture.hasLoaded) { @@ -51,7 +51,8 @@ { if(isRenderTexture) { - renderTarget = new RenderTarget(this.gl, texture.width, texture.height, texture.scaleMode, texture.resolution); + var renderTarget = new RenderTarget(this.gl, texture.width, texture.height, texture.scaleMode, texture.resolution); + renderTarget.resize(texture.width, texture.height); texture._glRenderTargets[this.renderer.CONTEXT_UID] = renderTarget; glTexture = renderTarget.texture; } @@ -69,9 +70,6 @@ this._managedTextures.push(texture); - - - if(texture.isPowerOfTwo) { if(texture.mipmap) @@ -105,13 +103,18 @@ { glTexture.enableLinearScaling(); } - - } - - if(isRenderTexture) - { - renderTarget.resize(texture.width, texture.height); + else + { + // the textur ealrady exists so we only need to update it.. + if(isRenderTexture) + { + texture._glRenderTargets[this.renderer.CONTEXT_UID].resize(texture.width, texture.height); + } + else + { + glTexture.upload(texture.source); + } } return glTexture; diff --git a/src/core/renderers/webgl/TextureManager.js b/src/core/renderers/webgl/TextureManager.js index 9208840..c8330a5 100644 --- a/src/core/renderers/webgl/TextureManager.js +++ b/src/core/renderers/webgl/TextureManager.js @@ -38,7 +38,7 @@ { texture = texture.baseTexture || texture; - var isRenderTexture = !!texture._glRenderTargets; + var isRenderTexture = !!texture._glRenderTargets; if (!texture.hasLoaded) { @@ -51,7 +51,8 @@ { if(isRenderTexture) { - renderTarget = new RenderTarget(this.gl, texture.width, texture.height, texture.scaleMode, texture.resolution); + var renderTarget = new RenderTarget(this.gl, texture.width, texture.height, texture.scaleMode, texture.resolution); + renderTarget.resize(texture.width, texture.height); texture._glRenderTargets[this.renderer.CONTEXT_UID] = renderTarget; glTexture = renderTarget.texture; } @@ -69,9 +70,6 @@ this._managedTextures.push(texture); - - - if(texture.isPowerOfTwo) { if(texture.mipmap) @@ -105,13 +103,18 @@ { glTexture.enableLinearScaling(); } - - } - - if(isRenderTexture) - { - renderTarget.resize(texture.width, texture.height); + else + { + // the textur ealrady exists so we only need to update it.. + if(isRenderTexture) + { + texture._glRenderTargets[this.renderer.CONTEXT_UID].resize(texture.width, texture.height); + } + else + { + glTexture.upload(texture.source); + } } return glTexture; diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 037e736..9bc758d 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -109,8 +109,6 @@ * * @member {PIXI.FilterManager} */ - - this._initContext(); this.filterManager = new FilterManager(this); @@ -275,7 +273,7 @@ this._activeRenderTarget.transform = matrix; }; -//TOOD - required? + WebGLRenderer.prototype.bindRenderTexture = function (renderTexture, transform) { if(renderTexture) @@ -376,7 +374,6 @@ /** * resets WebGL state so you can render things however you fancy! - * @return {[type]} [description] */ WebGLRenderer.prototype.reset = function () { diff --git a/src/core/renderers/webgl/TextureManager.js b/src/core/renderers/webgl/TextureManager.js index 9208840..c8330a5 100644 --- a/src/core/renderers/webgl/TextureManager.js +++ b/src/core/renderers/webgl/TextureManager.js @@ -38,7 +38,7 @@ { texture = texture.baseTexture || texture; - var isRenderTexture = !!texture._glRenderTargets; + var isRenderTexture = !!texture._glRenderTargets; if (!texture.hasLoaded) { @@ -51,7 +51,8 @@ { if(isRenderTexture) { - renderTarget = new RenderTarget(this.gl, texture.width, texture.height, texture.scaleMode, texture.resolution); + var renderTarget = new RenderTarget(this.gl, texture.width, texture.height, texture.scaleMode, texture.resolution); + renderTarget.resize(texture.width, texture.height); texture._glRenderTargets[this.renderer.CONTEXT_UID] = renderTarget; glTexture = renderTarget.texture; } @@ -69,9 +70,6 @@ this._managedTextures.push(texture); - - - if(texture.isPowerOfTwo) { if(texture.mipmap) @@ -105,13 +103,18 @@ { glTexture.enableLinearScaling(); } - - } - - if(isRenderTexture) - { - renderTarget.resize(texture.width, texture.height); + else + { + // the textur ealrady exists so we only need to update it.. + if(isRenderTexture) + { + texture._glRenderTargets[this.renderer.CONTEXT_UID].resize(texture.width, texture.height); + } + else + { + glTexture.upload(texture.source); + } } return glTexture; diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 037e736..9bc758d 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -109,8 +109,6 @@ * * @member {PIXI.FilterManager} */ - - this._initContext(); this.filterManager = new FilterManager(this); @@ -275,7 +273,7 @@ this._activeRenderTarget.transform = matrix; }; -//TOOD - required? + WebGLRenderer.prototype.bindRenderTexture = function (renderTexture, transform) { if(renderTexture) @@ -376,7 +374,6 @@ /** * resets WebGL state so you can render things however you fancy! - * @return {[type]} [description] */ WebGLRenderer.prototype.reset = function () { diff --git a/src/core/textures/Texture.js b/src/core/textures/Texture.js index 00aaa6f..c178207 100644 --- a/src/core/textures/Texture.js +++ b/src/core/textures/Texture.js @@ -241,6 +241,7 @@ this.frame = this._frame; } + this.baseTexture.on('update', this.onBaseTextureUpdated, this); this.emit('update', this); };