目前我正在使用Cocos2d中的着色器进行实验。我的目标是对整个屏幕(除了一个节点及其子节点)应用着色器,以便在游戏模糊时有一个叠加菜单。
现在我找到了这个教程来使用Cocos2D中的着色器,并得到了以下代码:
CCSprite *aSprite = [CCSprite spriteWithImageNamed:@"Default.png"];
aSprite.contentSizeType = CCSizeTypeNormalized;
aSprite.contentSize = CGSizeMake(0.5,0.5);
NSString *fullPath = [[NSBundle mainBundle] pathForResource:@"CSEEmboss" ofType:@"fsh"];
const GLchar * fragmentSource = (GLchar*) [[NSString stringWithContentsOfFile:fullPath encoding:NSUTF8StringEncoding error:nil] UTF8String];
aSprite.shaderProgram = [[CCGLProgram alloc] initWithVertexShaderByteArray:ccPositionTextureA8Color_vert
fragmentShaderByteArray:fragmentSource];
[aSprite.shaderProgram addAttribute:kCCAttributeNamePosition index:kCCVertexAttrib_Position];
[aSprite.shaderProgram addAttribute:kCCAttributeNameTexCoord index:kCCVertexAttrib_TexCoords];
[aSprite.shaderProgram link];
[aSprite.shaderProgram updateUniforms];
[aSprite.shaderProgram use];
[self.scene addChild:aSprite];
确实可以将浮雕应用于精灵,但是当我向该精灵添加子元素时,着色器不会应用于那里,我该怎么做?我的场景包含许多子元素,使用循环为每个子元素添加和删除着色器似乎不正确。