Skip to content

Commit 014107c

Browse files
committed
Don’t add CCRenderTexture.sprite as a child.
1 parent dc3ad27 commit 014107c

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

cocos2d/CCRenderTexture.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,8 @@ typedef NS_ENUM(NSInteger, CCRenderTextureImageFormat)
5858
*/
5959
@interface CCRenderTexture : CCNode
6060

61-
/** The CCSprite being used.
62-
The sprite, by default, will use the following blending function: GL_ONE, GL_ONE_MINUS_SRC_ALPHA.
63-
The blending function can be changed in runtime by calling:
64-
- [[renderTexture sprite] setBlendFunc:(ccBlendFunc){GL_ONE, GL_ONE_MINUS_SRC_ALPHA}];
61+
/** The CCSprite that is used for rendering.
62+
A sublte change introduced in v3.1.1 is that this sprite is rendered explicitly and is not a child of the render texture.
6563
*/
6664
@property (nonatomic,readwrite, strong) CCSprite* sprite;
6765

cocos2d/CCRenderTexture.m

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,6 @@ -(id)initWithWidth:(int)width height:(int)height pixelFormat:(CCTexturePixelForm
131131

132132
// Diabled by default.
133133
_autoDraw = NO;
134-
135-
// add sprite for backward compatibility
136-
[self addChild:_sprite];
137134
}
138135
return self;
139136
}
@@ -392,18 +389,29 @@ - (void)visit:(CCRenderer *)renderer parentTransform:(const GLKMatrix4 *)parentT
392389
[self sortAllChildren];
393390

394391
for(CCNode *child in _children){
395-
if( child != _sprite) [child visit:renderer parentTransform:&_projection];
392+
[child visit:renderer parentTransform:&_projection];
396393
}
397394

398395
[self end];
396+
397+
GLKMatrix4 transform = [self transform:parentTransform];
398+
[self draw:renderer transform:&transform];
399+
} else {
400+
// Render normally, v3.0 and earlier skipped this.
401+
[super visit:renderer parentTransform:parentTransform];
399402
}
400403

401-
GLKMatrix4 transform = [self transform:parentTransform];
402-
[_sprite visit:renderer parentTransform:&transform];
403-
404404
_orderOfArrival = 0;
405405
}
406406

407+
-(void)draw:(CCRenderer *)renderer transform:(const GLKMatrix4 *)transform
408+
{
409+
NSAssert(_sprite.zOrder == 0, @"Changing the sprite's zOrder is not supported.");
410+
411+
// Force the sprite to render itself.
412+
[_sprite visit:renderer parentTransform:transform];
413+
}
414+
407415
#pragma mark RenderTexture - Save Image
408416

409417
-(CGImageRef) newCGImage

0 commit comments

Comments
 (0)