1 - (CCSprite *)maskedSpriteWithSprite:(CCSprite *)textureSprite maskSprite:(CCSprite *)maskSprite {
2
3 // 1
4 CCRenderTexture * rt = [CCRenderTexture renderTextureWithWidth:maskSprite.contentSizeInPixels.width height:maskSprite.contentSizeInPixels.height];
5
6 // 2
7 maskSprite.position = ccp(maskSprite.contentSize.width/2, maskSprite.contentSize.height/2);
8 textureSprite.position = ccp(textureSprite.contentSize.width/2, textureSprite.contentSize.height/2);
9
10 // 3
11 [maskSprite setBlendFunc:(ccBlendFunc){GL_ONE, GL_ZERO}];
12 [textureSprite setBlendFunc:(ccBlendFunc){GL_DST_ALPHA, GL_ZERO}];
13
14 // 4
15 [rt begin];
16 [maskSprite visit];
17 [textureSprite visit];
18 [rt end];
19
20 // 5
21 CCSprite *retval = [CCSprite spriteWithTexture:rt.sprite.texture];
22 retval.flipY = YES;
23 return retval;
24
25 }