gpt4 book ai didi

ios - Cocos2d v3 在子节点上应用着色器

转载 作者:行者123 更新时间:2023-12-03 20:55:54 26 4
gpt4 key购买 nike

目前我正在研究 Cocos2d 中的着色器。我的目标是将着色器应用于整个屏幕(一个节点及其子节点除外),以便在游戏模糊时显示覆盖菜单。

现在我找到了this tutorial在 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];

这确实将浮雕应用于 Sprite ,但是当我向该 Sprite 添加子项时,着色器未应用在那里,我应该怎么做?我的场景包含许多子项,并且通过循环向每个子项添加和删除着色器似乎不适合我。

最佳答案

经过自己的一些研究,我认为实现此目的的最佳方法是使用 CCRenderTexture 并制作界面其余部分的屏幕截图。然后在渲染纹理生成的 CCSprite 上使用模糊着色器。然后,您可以将菜单界面定位在渲染纹理上方。

关于ios - Cocos2d v3 在子节点上应用着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22042575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com