diff --git a/cocos2d/render-texture/CCRenderTexture.js b/cocos2d/render-texture/CCRenderTexture.js index 5cc00ae45a..c9c8048f99 100644 --- a/cocos2d/render-texture/CCRenderTexture.js +++ b/cocos2d/render-texture/CCRenderTexture.js @@ -202,7 +202,6 @@ cc.RenderTexture = cc.Node.extend(/** @lends cc.RenderTexture# */{ * @function */ begin: function () { - cc.renderer._turnToCacheMode(this.__instanceId); this._renderCmd.begin(); }, /** diff --git a/cocos2d/render-texture/CCRenderTextureCanvasRenderCmd.js b/cocos2d/render-texture/CCRenderTextureCanvasRenderCmd.js index c55f9e7ad1..31df9ae632 100644 --- a/cocos2d/render-texture/CCRenderTextureCanvasRenderCmd.js +++ b/cocos2d/render-texture/CCRenderTextureCanvasRenderCmd.js @@ -28,6 +28,8 @@ this._needDraw = false; this._clearColorStr = "rgba(255,255,255,1)"; + this._oldIsCacheToCanvasOn = false; + this._cacheCanvas = document.createElement('canvas'); this._cacheContext = new cc.CanvasContextWrapper(this._cacheCanvas.getContext('2d')); }; @@ -70,6 +72,8 @@ }; proto.begin = function () { + this._oldIsCacheToCanvasOn = cc.renderer._isCacheToCanvasOn; + cc.renderer._turnToCacheMode(node.__instanceId); }; proto._beginWithClear = function (r, g, b, a, depthValue, stencilValue, flags) { @@ -91,6 +95,9 @@ var scale = cc.contentScaleFactor(); cc.renderer._renderingToCacheCanvas(this._cacheContext, node.__instanceId, scale, scale); + + cc.renderer._isCacheToCanvasOn = this._oldIsCacheToCanvasOn; + var spriteRenderCmd = node.sprite._renderCmd; spriteRenderCmd._notifyRegionStatus && spriteRenderCmd._notifyRegionStatus(cc.Node.CanvasRenderCmd.RegionStatus.Dirty); }; diff --git a/cocos2d/render-texture/CCRenderTextureWebGLRenderCmd.js b/cocos2d/render-texture/CCRenderTextureWebGLRenderCmd.js index 9abe91feaf..41048c3fb5 100644 --- a/cocos2d/render-texture/CCRenderTextureWebGLRenderCmd.js +++ b/cocos2d/render-texture/CCRenderTextureWebGLRenderCmd.js @@ -29,6 +29,7 @@ this._fBO = null; this._oldFBO = null; + this._oldIsCacheToBufferOn = false; this._textureCopy = null; this._depthRenderBuffer = null; @@ -226,6 +227,10 @@ proto.begin = function () { var node = this._node; + + this._oldIsCacheToBufferOn = cc.renderer._isCacheToBufferOn; + cc.renderer._turnToCacheMode(node.__instanceId); + // Save the current matrix cc.kmGLMatrixMode(cc.KM_GL_PROJECTION); cc.kmGLPushMatrix(); @@ -320,6 +325,8 @@ var node = this._node; cc.renderer._renderingToBuffer(node.__instanceId); + cc.renderer._isCacheToBufferOn = this._oldIsCacheToBufferOn; + var gl = cc._renderContext; var director = cc.director; gl.bindFramebuffer(gl.FRAMEBUFFER, this._oldFBO);