LoginSignup
17
16

More than 5 years have passed since last update.

GPUImageで楽にフィルターをつなげて、GPUImageFilterGroupを作ってくれるメソッド作った

Last updated at Posted at 2013-01-11

こんな感じ。これで、一本つなげるだけなら楽ちん。もっと良いコード書きたいけど。

- (GPUImageFilterGroup *)createFilterGroup:(NSArray *)filters{
    GPUImageFilterGroup *filterGroup = [[GPUImageFilterGroup alloc] init];
    GPUImageFilter *beforeFilter = nil;
    for (GPUImageFilter *filter in filters) {
        [filterGroup addTarget:filter];
        if (!beforeFilter){ // beforeフィルターが設定されてない時は一番最初
            beforeFilter = filter;
            continue;
        }
        [beforeFilter addTarget:filter];
        beforeFilter = filter;
    }
    GPUImageFilter *firstFilter = [filters objectAtIndex:0];
    [filterGroup setInitialFilters:@[firstFilter]];
    GPUImageFilter *endFilter = [filters lastObject];
    [filterGroup setTerminalFilter:endFilter];
    return filterGroup;
}

使うときは

    GPUImageFilter *filter1 = [[GPUImageFilter alloc] init];
    GPUImageFilter *filter1 = [[GPUImageFilter alloc] init];

    GPUImageFilterGroup filterGroup =  [self createFilterGroup:@[filter1,filter2]];

ほら楽ちん。

けど、多分もっと良いコードあるんだろうなぁ。あと、Blendとかいろいろなつなぎ方にも対応したい。できるだけ、Arrayで書けば勝手に繋がってくれるのが理想だもんな。

17
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16