为什么对GPUImageUIElement的后续更新调用导致黑色输出?

时间:2014-10-07 23:10:09

标签: ios objective-c gpuimage

问题:我正在尝试将高斯模糊应用于更改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)
  • 在我的实际代码中,三个GPUImage变量保持为强大的ivars。

0 个答案:

没有答案