Skip to content

Commit d4d57d5

Browse files
committed
Update CCEffectNode with the CCRenderTexture changes.
1 parent 6edcca8 commit d4d57d5

File tree

2 files changed

+36
-113
lines changed

2 files changed

+36
-113
lines changed

cocos2d/CCEffectNode.m

Lines changed: 34 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -117,41 +117,6 @@ -(void)destroy
117117
_allocatedSize = CGSizeMake(0.0f, 0.0f);
118118
}
119119

120-
-(void)begin
121-
{
122-
// CGSize pixelSize = self.texture.contentSizeInPixels;
123-
// GLuint fbo = [self fbo];
124-
//
125-
// [_renderer pushGroup];
126-
// [_renderer enqueueBlock:^{
127-
// glGetFloatv(GL_VIEWPORT, _oldViewport.v);
128-
// glViewport(0, 0, pixelSize.width, pixelSize.height );
129-
//
130-
// glGetIntegerv(GL_FRAMEBUFFER_BINDING, &_oldFBO);
131-
// glBindFramebuffer(GL_FRAMEBUFFER, fbo);
132-
//
133-
// } globalSortOrder:NSIntegerMin debugLabel:@"CCEffectNode: Bind FBO" threadSafe:NO];
134-
}
135-
136-
-(void)endWithDebugLabel:(NSString *)debugLabel
137-
{
138-
// [_renderer enqueueBlock:^{
139-
// glBindFramebuffer(GL_FRAMEBUFFER, _oldFBO);
140-
// glViewport(_oldViewport.v[0], _oldViewport.v[1], _oldViewport.v[2], _oldViewport.v[3]);
141-
// } globalSortOrder:NSIntegerMax debugLabel:@"CCEffectNode: Restore FBO" threadSafe:NO];
142-
//
143-
// [_renderer popGroupWithDebugLabel:debugLabel globalSortOrder:0];
144-
}
145-
146-
-(void)visit
147-
{
148-
// [self configureRender];
149-
// NSAssert(_renderer, @"Cannot call [CCNode visit] without a currently bound renderer.");
150-
//
151-
// GLKMatrix4 projection; [_renderer.globalShaderUniforms[CCShaderUniformProjection] getValue:&projection];
152-
// [self visit:_renderer parentTransform:&projection];
153-
}
154-
155120
-(void)visit:(CCRenderer *)renderer parentTransform:(const GLKMatrix4 *)parentTransform
156121
{
157122
// override visit.
@@ -173,83 +138,42 @@ -(void)visit:(CCRenderer *)renderer parentTransform:(const GLKMatrix4 *)parentTr
173138
_orderOfArrival = 0;
174139
}
175140

176-
-(void)configureRender
177-
{
178-
// // bind renderer
179-
// _renderer = [CCRenderer currentRenderer];
180-
//
181-
// if(_renderer == nil)
182-
// {
183-
// _renderer = [[CCRenderer alloc] init];
184-
//
185-
// NSMutableDictionary *uniforms = [[CCDirector sharedDirector].globalShaderUniforms mutableCopy];
186-
// uniforms[CCShaderUniformProjection] = [NSValue valueWithGLKMatrix4:_projection];
187-
// #warning FIXME
188-
//// _renderer.globalShaderUniforms = uniforms;
189-
//
190-
// [CCRenderer bindRenderer:_renderer];
191-
// _privateRenderer = YES;
192-
// }
193-
// else if(_privateRenderer == NO)
194-
// {
195-
// _oldGlobalUniforms = _renderer.globalShaderUniforms;
196-
//
197-
// NSMutableDictionary *uniforms = [_oldGlobalUniforms mutableCopy];
198-
// uniforms[CCShaderUniformProjection] = [NSValue valueWithGLKMatrix4:_projection];
199-
// #warning FIXME
200-
//// _renderer.globalShaderUniforms = uniforms;
201-
// }
202-
}
203-
204141
-(void)draw:(CCRenderer *)renderer transform:(const GLKMatrix4 *)transform
205142
{
206-
// [self configureRender];
207-
//
208-
// NSAssert(_renderer == renderer, @"CCEffectNode error!");
209-
//
210-
// // Render children of this effect node into an FBO for use by the
211-
// // remainder of the effects.
212-
// [self begin];
213-
//
214-
// [_renderer enqueueClear:self.clearFlags color:_clearColor depth:self.clearDepth stencil:self.clearStencil globalSortOrder:NSIntegerMin];
215-
//
216-
// //! make sure all children are drawn
217-
// [self sortAllChildren];
218-
//
219-
// for(CCNode *child in _children){
220-
// if( child != _sprite) [child visit:renderer parentTransform:&_projection];
221-
// }
222-
// [self endWithDebugLabel:@"CCEffectNode: Pre-render pass"];
223-
//
224-
// // Done pre-render
225-
//
226-
// if (_effect)
227-
// {
228-
// _effectRenderer.contentSize = self.contentSizeInPoints;
229-
// if ([_effect prepareForRendering] == CCEffectPrepareSuccess)
230-
// {
231-
// // Preparing an effect for rendering can modify its uniforms
232-
// // dictionary which means we need to reinitialize our copy of the
233-
// // uniforms.
234-
// [self updateShaderUniformsFromEffect];
235-
// }
236-
// [_effectRenderer drawSprite:_sprite withEffect:_effect uniforms:_shaderUniforms renderer:_renderer transform:transform];
237-
// }
238-
// else
239-
// {
240-
// _sprite.anchorPoint = ccp(0.0f, 0.0f);
241-
// _sprite.position = ccp(0.0f, 0.0f);
242-
// [_sprite visit:_renderer parentTransform:transform];
243-
// }
244-
//
245-
//// if(_privateRenderer == NO)
246-
//// ;
247-
//// #warning FIXME
248-
////// _renderer.globalShaderUniforms = _oldGlobalUniforms;
249-
//// else
250-
//// [CCRenderer bindRenderer:nil];
251-
//
252-
// _renderer = nil;
143+
// Render children of this effect node into an FBO for use by the
144+
// remainder of the effects.
145+
CCRenderer *rtRenderer = [self begin];
146+
147+
[rtRenderer enqueueClear:self.clearFlags color:_clearColor depth:self.clearDepth stencil:self.clearStencil globalSortOrder:NSIntegerMin];
148+
149+
//! make sure all children are drawn
150+
[self sortAllChildren];
151+
152+
for(CCNode *child in _children){
153+
if( child != _sprite) [child visit:rtRenderer parentTransform:&_projection];
154+
}
155+
[self end];
156+
157+
// Done pre-render
158+
159+
if (_effect)
160+
{
161+
_effectRenderer.contentSize = self.contentSizeInPoints;
162+
if ([_effect prepareForRendering] == CCEffectPrepareSuccess)
163+
{
164+
// Preparing an effect for rendering can modify its uniforms
165+
// dictionary which means we need to reinitialize our copy of the
166+
// uniforms.
167+
[self updateShaderUniformsFromEffect];
168+
}
169+
[_effectRenderer drawSprite:_sprite withEffect:_effect uniforms:_shaderUniforms renderer:renderer transform:transform];
170+
}
171+
else
172+
{
173+
_sprite.anchorPoint = ccp(0.0f, 0.0f);
174+
_sprite.position = ccp(0.0f, 0.0f);
175+
[_sprite visit:renderer parentTransform:transform];
176+
}
253177
}
254178

255179
- (void)updateShaderUniformsFromEffect

cocos2d/CCRendererBasicTypes_Private.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,10 @@ CCGraphicsBufferPushElements(CCGraphicsBuffer *buffer, size_t requestedCount)
116116
@end
117117

118118

119-
@interface CCFrameBufferObject : NSObject {
120-
CCTexture *_texture;
121-
}
119+
@interface CCFrameBufferObject : NSObject
122120

123121
// Setters should be treated as protected.
122+
@property(nonatomic, readonly) CCTexture *texture;
124123
@property(nonatomic, assign) CGSize sizeInPixels;
125124
@property(nonatomic, assign) CGFloat contentScale;
126125

0 commit comments

Comments
 (0)