问题:我正在尝试将高斯模糊应用于更改UIView
并使用GPUImage显示实时模糊结果。目前,许多GPUImage的过滤器都能很好地工作,但GPUImageGaussianBlurFilter
以奇怪的方式表现不同。在update
调用GPUImageUIElement
而不重新实例化输入并进行过滤后,结果输出为黑色且空白。
示例:
- (void) viewWillAppear:(BOOL)animated {
// blurInput --> blurFilter --> blurOutput
GPUImageUIElement *blurInput = [[GPUImageUIElement alloc] initWithView:self.changingView];
GPUImageGaussianBlurFilter *blurFilter = [[GPUImageGaussianBlurFilter alloc] init];
GPUImageView *blurOutput = [[GPUImageView alloc] initWithFrame:self.view.frame];
[blurInput addTarget:self.blurFilter];
[blurFilter addTarget:self.blurOutput];
[self.view insertSubview:self.blurOutput];
[blurInput update];
}
发生了什么:此时模糊工作正常,但后续调用[blurInput update]
(即更新时来自基础self.changingView
)会导致{ {1}}视图变黑...除非我重新实例化blurOutput
/ blurIntput
,再次添加目标,然后致电blurFilter
。对于许多GPUImage的其他过滤器来说,这不是必需的。
备注:
[blurInput update]
部分是渐变图层(CAGradientLayer)