首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将全屏SKEffectNode应用于SpriteKit的后处理

如何将全屏SKEffectNode应用于SpriteKit的后处理
EN

Stack Overflow用户
提问于 2013-09-21 20:48:26
回答 1查看 3.4K关注 0票数 6

我正在使用以下设置试用SpriteKit:

  1. 带有两个子节点的SKScene,仅用于分组其他节点:前台和后台。
  2. 从现在开始,背景实际上是空的,但最终会持有某种背景精灵/层。
  3. 前台是一个SKEffectNode,每当用户点击屏幕上,就会向它添加一个表示游戏元素的SKnode子类的新意图。
  4. 这个SKNode子类基本上创建了3个SKShapeNodes和两个标签:一个外部圆周、一个内圆周、2个标签和一个内四分之一圆周。内四分之一周长有一个SKAction,使它永远围绕着它的起源/中心旋转。

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

  1. 框架下降到大约2 2fps。请注意,即使现场只有6个节点活着,也会发生这种情况。
  2. 其效果似乎是不断地裁剪其内容或调整其框架。也就是说,如果我有一个节点,“全屏”效果似乎尝试并不断地裁剪或调整其边界,以达到容纳所有节点所需的最小区域。这是针对一个节点的:

这是为两个节点:

在OpenGL ES 2中,通过将整个框架缓冲区(所有对象)基本呈现为纹理,然后对该纹理执行至少一次传递到模糊等方式,进行后期模糊/刷新,然后在连接到显示的帧缓冲区中显示该值,或者将其与原始呈现返回到框架缓冲区。我希望SKEffectNode也能以类似的方式工作。然而,裁剪和较差的性能使我认为我可能使用的效果节点错误的方式。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18937461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档