SpriteKit - SKEffectnode混合模式,光栅化和帧速率

时间:2014-04-10 20:52:32

标签: ios sprite-kit lighting skeffectnode

我正在尝试使用SKEffectnode在侧滚动游戏中做一些简单的照明。 首先,我创建一个灰色的全屏精灵节点,将其混合模式设置为加法,并将其作为子项添加到效果节点。然后我添加一些具有轻微纹理的精灵节点,也作为效果节点的子节点。最后,我将效果节点的混合模式设置为multiply,并将其作为子项添加到场景中。像这样:

SKEffectNode *effectNode = [[SKEffectNode alloc] init];
SKSpriteNode *overlay = [SKSpriteNode spriteNodeWithColor: [SKColor grayColor] size: [self.size];
SKSpriteNode *light = [SKSpriteNode spriteNodeWithImageNamed: @"LightTexture.png"];
[overlay setBlendMode: SKBlendModeAdd];
[light setBlendMode: SKBlendModeAdd];
[effectNode addChild: overlay];
[effectNode addChild: light];
[effectNode setBlendMode: SKBlendModeMultiply];
[self addChild: effectNode];

所以我的问题是效果节点的混合模式似乎没有做任何事情。就像它卡在alpha混合模式或其他东西。但是,如果我将shouldRasterize设置为YES,则混合模式将按预期开始工作。有谁知道这是为什么?

同样使用效果节点添加这样的全屏效果会完全破坏帧速率。特别是如果您开始移动效果节点(或每帧创建一个新节点)。但我没有看到任何其他方式在精灵套件中做这样的照明。我基本上想要每帧创建一个光照蒙版,然后将它乘以场景的帧缓冲区。使用Sprite Kit可以实现这样吗?或者我应该使用自定义着色器查看Cocos2d吗?

0 个答案:

没有答案