Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SpriteKit-SKEffectnode混合模式、光栅化和帧速率_Ios_Sprite Kit_Lighting_Skeffectnode - Fatal编程技术网

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

Ios SpriteKit-SKEffectnode混合模式、光栅化和帧速率,ios,sprite-kit,lighting,skeffectnode,Ios,Sprite Kit,Lighting,Skeffectnode,我正在尝试使用SKEffectnode在侧滚游戏中进行一些简单的照明。 首先,我用灰色创建一个全屏精灵节点,将其混合模式设置为“加法”,并将其作为子节点添加到效果节点。然后,我添加带有一些轻纹理的精灵节点,也作为效果节点的子节点。最后,我将效果节点的混合模式设置为“倍增”,并将其作为子对象添加到场景中。大概是这样的: SKEffectNode *effectNode = [[SKEffectNode alloc] init]; SKSpriteNode *overlay = [SKSpriteN

我正在尝试使用SKEffectnode在侧滚游戏中进行一些简单的照明。 首先,我用灰色创建一个全屏精灵节点,将其混合模式设置为“加法”,并将其作为子节点添加到效果节点。然后,我添加带有一些轻纹理的精灵节点,也作为效果节点的子节点。最后,我将效果节点的混合模式设置为“倍增”,并将其作为子对象添加到场景中。大概是这样的:

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工具包可以实现类似的功能吗?或者我应该使用自定义着色器查看Cocos2d吗?

您在什么设备上测试此功能?@learncos2D我正在iPhone 4s和iOS模拟器上测试。