我正在使用以下设置试用SpriteKit:
现在有个问题,只要前台没有任何CIFilter或shouldEnableEffects = NO,一切都很好。也就是说,我可以点击屏幕,我的游戏元素被实例化并添加到主场景中。但是,当我尝试在前台添加一个CIGaussianBlur或CIBloom时,我注意到两件事:

这是为两个节点:

在OpenGL ES 2中,通过将整个框架缓冲区(所有对象)基本呈现为纹理,然后对该纹理执行至少一次传递到模糊等方式,进行后期模糊/刷新,然后在连接到显示的帧缓冲区中显示该值,或者将其与原始呈现返回到框架缓冲区。我希望SKEffectNode也能以类似的方式工作。然而,裁剪和较差的性能使我认为我可能使用的效果节点错误的方式。有什么想法吗?
发布于 2013-09-22 01:10:33
据我所知,SKEffectNode试图在儿童SKShapeNodes上应用一个过滤器,这似乎是一个bug。我玩这个游戏并取得了您的结果,但是当我切换出SKShapeNodes for SKSpriteNodes (使用简单的循环png )时,裁剪就不再出现了。这是一个bug,因为SKEffectNode不能很好地处理SKShapeNode的笔画。如果您去掉笔画(lineWidth = 0)并给它一个填充颜色,您将看到没有裁剪。
至于帧速率,SKShapeNodes的性能很差。执行前面提到的切换到SKSpriteNodes时,当我在屏幕上有35个节点(iPhone 5)并应用过滤器时,fps从40提高到50。
https://stackoverflow.com/questions/18937461
复制相似问题