diff --git a/src/core/renderers/webgl/ShaderManager.js b/src/core/renderers/webgl/ShaderManager.js index e27a954..78cb67d 100644 --- a/src/core/renderers/webgl/ShaderManager.js +++ b/src/core/renderers/webgl/ShaderManager.js @@ -41,7 +41,8 @@ { const glShader = shader.glShaders[this.renderer.CONTEXT_UID] || this.generateShader(shader); - if (this.shader !== shader) + // TODO - some current pixi plugins bypass this.. so it not safe to use yet.. + // if (this.shader !== shader) { this.shader = shader; this.renderer._bindGLShader(glShader); diff --git a/src/core/renderers/webgl/ShaderManager.js b/src/core/renderers/webgl/ShaderManager.js index e27a954..78cb67d 100644 --- a/src/core/renderers/webgl/ShaderManager.js +++ b/src/core/renderers/webgl/ShaderManager.js @@ -41,7 +41,8 @@ { const glShader = shader.glShaders[this.renderer.CONTEXT_UID] || this.generateShader(shader); - if (this.shader !== shader) + // TODO - some current pixi plugins bypass this.. so it not safe to use yet.. + // if (this.shader !== shader) { this.shader = shader; this.renderer._bindGLShader(glShader); diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 3ca5b5e..cdb4191 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -311,6 +311,8 @@ this.currentRenderer.stop(); this.currentRenderer = objectRenderer; + this.state.setState(objectRenderer.state); + this.currentRenderer.start(); } diff --git a/src/core/renderers/webgl/ShaderManager.js b/src/core/renderers/webgl/ShaderManager.js index e27a954..78cb67d 100644 --- a/src/core/renderers/webgl/ShaderManager.js +++ b/src/core/renderers/webgl/ShaderManager.js @@ -41,7 +41,8 @@ { const glShader = shader.glShaders[this.renderer.CONTEXT_UID] || this.generateShader(shader); - if (this.shader !== shader) + // TODO - some current pixi plugins bypass this.. so it not safe to use yet.. + // if (this.shader !== shader) { this.shader = shader; this.renderer._bindGLShader(glShader); diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 3ca5b5e..cdb4191 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -311,6 +311,8 @@ this.currentRenderer.stop(); this.currentRenderer = objectRenderer; + this.state.setState(objectRenderer.state); + this.currentRenderer.start(); } diff --git a/src/core/renderers/webgl/managers/StateManager.js b/src/core/renderers/webgl/managers/StateManager.js index 57f5969..b146e72 100755 --- a/src/core/renderers/webgl/managers/StateManager.js +++ b/src/core/renderers/webgl/managers/StateManager.js @@ -1,4 +1,5 @@ import mapWebGLBlendModesToPixi from '../utils/mapWebGLBlendModesToPixi'; +import WebGLState from '../State'; const BLEND = 0; const OFFSET = 1; @@ -44,7 +45,7 @@ this.stateId = 0; this.polygonOffset = 0; - this.blendMode = 0; + this.blendMode = 17; this.map = []; @@ -56,6 +57,11 @@ this.map[WINDING] = this.setFrontFace; this.checks = []; + + this.defaultState = new WebGLState(); + this.defaultState.blend = true; + + this.setState(this.defaultState); } /** @@ -65,6 +71,8 @@ */ setState(state) { + state = state || this.defaultState; + // TODO maybe to an object check? ( this.state === state )? if (this.stateId === state.data) return; @@ -159,6 +167,7 @@ return; } + this.blendMode = value; this.gl.blendFunc(this.blendModes[value][0], this.blendModes[value][1]); }