我有以下代码块,它利用GPUImage2库实时过滤视频。我们的想法是能够根据按钮点击来循环这些过滤器。但是只会应用一个过滤器,每当我尝试循环到下一个过滤器时,它都不会改变。这是我的功能:
func filterToggle() {
switch(filterSelected) {
case 0:
let sketch = SketchFilter()
camera! --> sketch --> renderView
break;
case 1:
let toon = ToonFilter()
camera! --> toon --> renderView
break;
default:
break;
}
camera?.startCapture()
}
感谢您的帮助!
答案 0 :(得分:2)
在切换到另一个滤镜之前,您必须先断开以前的滤镜与renderView和相机的连接。
在向链中添加新过滤器之前,请在相机和前一个过滤器上调用removeAllTargets()
(您可能需要一个存储前一个过滤器的实例变量才能执行此操作)。 Mac版的FilterShowcase演示了这一点。