problem when get sprite from CCRenderTexture

I have some mask images, and I wanna make some from it by CCRenderTexture.(mask images’ shape are diffence)
The basic source-code is like below:
///////////////////////////////////////////////////////
ccBlendFunc bfMask = ccBlendFunc();
bfMask.src = GL_ONE;
bfMask.dst = GL_ZERO;

ccBlendFunc bfTexture = ccBlendFunc();
bfTexture.src = GL_DST_ALPHA;
bfTexture.dst = GL_ZERO;

CCSprite* origSprite = CCSprite::spriteWithFile(imgPath);
origSprite~~>setAnchorPoint);
origSprite~~>setBlendFunc(bfTexture);
origSprite~~>setPosition;
maskSprites[0] = CCSprite::spriteWithFile;
maskSprites[0]>setAnchorPoint(ccp(0 , 0));
maskSprites[0]
>setBlendFunc;
maskSprites[0]~~>setPosition(ccp(0, H-h));

CCRenderTexture* rt = CCRenderTexture::renderTextureWithWidthAndHeight(W, H);

rt~~>begin;
maskSprites[0]>visit();
origSprite
>visit;
rt~~>end();
pSprites[0] = CCSprite::spriteWithTexture(rt~~>getSprite~~>getTexture,rect);
this~~>addChild;
/////////////////////////////////////////////////////
OK, the code above work fine, I can see the new image with maskSprite’s shape.
But, when I was going to use it twice or more , it occur something strange.
That is my code:
/////////////////////////////////
CCRenderTexture* rt = CCRenderTexture::renderTextureWithWidthAndHeight;
rt~~>begin();
maskSprites[0]>visit;
origSprite
>visit();
rt~~>end;
pSprites[0] = CCSprite::spriteWithTexture~~>getTexture,rect);
this~~>addChild;
rt~~>begin();
maskSprites[1]>visit;
origSprite
>visit();
rt->end();
pSprites[1] = CCSprite::spriteWithTexture(rt->getSprite()>getTexture,rect);
this
>addChild(pSprites[1]);
////////////////////////////////////////
this time I can’t get a image with a new shape.
it returns two images with the same shape. (maskSprites[1]’s shape)
it seems “(rt->getSprite()->getTexture()” was cached?
What should I do OR Where did I lost ?
thank you very much.