CIGaussianBlur 需要太多处理[重复]

Posted

技术标签:

【中文标题】CIGaussianBlur 需要太多处理[重复]【英文标题】:CIGaussianBlur takes too much processing [duplicate] 【发布时间】:2015-02-17 19:03:59 【问题描述】:

我正在尝试在游戏暂停屏幕上应用 CIGaussianBlur 效果。这是我的代码:

effectsNode = SKEffectNode();
let filter = CIFilter(name: "CIGaussianBlur");
let blurAmount = 10.0;
filter.setValue(blurAmount, forKey: kCIInputRadiusKey);

effectsNode.filter = filter;
effectsNode.blendMode = .Alpha;

此代码运行良好,但它占用了太多的处理能力并大大降低了 FPS!我只想要游戏暂停时背景的静态模糊图像。

这个问题有解决办法吗?

【问题讨论】:

试试 shouldRasterize 属性(或类似的,它的名字中有“rasterize”) @LearnCocos2D 我希望我早点看到这个,无论如何我按照答案提到的帖子并经过一些调整后让它工作:) 我截取了一个屏幕截图并应用了一次模糊效果,什么替代成本最少的内存?光栅化或截屏并模糊它? 【参考方案1】:

您是否对每一帧都应用了效果?您应该只应用一次,然后保存结果,并在暂停期间显示该结果。你可以在this post中看到一个例子

【讨论】:

像魅力一样工作!谢谢你:) 链接的答案,虽然它是该问题的公认答案,但并不是最有效的解决方案——不需要将图像数据从 SpriteKit(它在 GPU 内存中)往返到 UIKit(在CPU 内存)以应用过滤器并将其放回 Spritekit。 Another answer 对同一问题说明了将 SKEffectNodeshouldRasterize 选项一起使用,以便仅应用一次模糊过滤器,而不是在每次绘制时应用。 (事实上​​,60fps 的全屏模糊对于某些硬件来说太过分了。)

以上是关于CIGaussianBlur 需要太多处理[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django DRF 中处理时区而不重复自己太多?

pyspark数据帧到HDFS保存太多文件[重复]

纱线上的火花任务太多[重复]

CoreImage 中的模糊滤镜

磁盘分区脚本

Excel数据太多,不会筛选重复数据?只需1键,即可筛选出重复数据