Skip to content

Commit 34cb845

Browse files
committed
Wip fixing filter issue with multitexture
1 parent c8f7761 commit 34cb845

4 files changed

Lines changed: 11 additions & 3 deletions

File tree

src/pixi/display/DisplayObject.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,9 @@ PIXI.DisplayObject.prototype = {
529529

530530
if (!this._cachedSprite)
531531
{
532-
var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height);
532+
var textureUnit = 0;
533+
534+
var renderTexture = new PIXI.RenderTexture(bounds.width, bounds.height, null, null, null, textureUnit);
533535
this._cachedSprite = new PIXI.Sprite(renderTexture);
534536
this._cachedSprite.worldTransform = this.worldTransform;
535537
}

src/pixi/renderers/webgl/shaders/PixiFastShader.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ PIXI.PixiFastShader = function (gl) {
6767
'varying float vTextureIndex;',
6868
'uniform sampler2D uSampler;',
6969
'void main(void) {',
70-
' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor;'
70+
' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor;',
7171
'}'
7272
];
7373
}

src/pixi/renderers/webgl/utils/FilterTexture.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ PIXI.FilterTexture = function(gl, width, height, scaleMode)
3838
*/
3939
scaleMode = scaleMode || PIXI.scaleModes.DEFAULT;
4040

41+
gl.activeTexture(gl.TEXTURE0);
42+
4143
gl.bindTexture(gl.TEXTURE_2D, this.texture);
4244
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST);
4345
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST);

src/pixi/textures/RenderTexture.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@
3232
* @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values
3333
* @param resolution {Number} The resolution of the texture being generated
3434
*/
35-
PIXI.RenderTexture = function(width, height, renderer, scaleMode, resolution)
35+
PIXI.RenderTexture = function(width, height, renderer, scaleMode, resolution, textureUnit)
3636
{
37+
textureUnit = typeof textureUnit == 'number' ? textureUnit : 0;
3738
/**
3839
* The with of the render texture
3940
*
@@ -107,6 +108,8 @@ PIXI.RenderTexture = function(width, height, renderer, scaleMode, resolution)
107108
if (this.renderer.type === PIXI.WEBGL_RENDERER)
108109
{
109110
var gl = this.renderer.gl;
111+
// gl.activeTexture(gl.TEXTURE0 + textureUnit);
112+
this.baseTexture.textureIndex = textureUnit;
110113
this.baseTexture._dirty[gl.id] = false;
111114

112115
this.textureBuffer = new PIXI.FilterTexture(gl, this.width, this.height, this.baseTexture.scaleMode);
@@ -245,6 +248,7 @@ PIXI.RenderTexture.prototype.renderWebGL = function(displayObject, matrix, clear
245248

246249
this.renderer.spriteBatch.dirty = true;
247250

251+
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
248252
};
249253

250254
/**

0 commit comments

Comments
 (0)