BradLarson/GPUImage

For `GPUImageFilterGroup`, why do we need to do all the `addFilter`, `setInitialFilters`, `setTerminalFilter` steps?

allenlinli opened this issue · 0 comments

Hi, I have a question that why do we need to do all the addFilter, setInitialFilters, setTerminalFilter steps? And we even need to addTarget for the filters in the group?
What's the difference between filters and initialFilters within GPUImageFilterGroup.m?

Is it possible that the GPUImageFilterGroup just receives a filters array, and setup setInitialFilters, setTerminalFilter, and even add target one by one for the filters being added?

        case GPUIMAGE_FILTERGROUP:
        {
            self.title = @"Filter Group";
            self.filterSettingsSlider.hidden = NO;
            
            [self.filterSettingsSlider setValue:0.05];
            [self.filterSettingsSlider setMinimumValue:0.0];
            [self.filterSettingsSlider setMaximumValue:0.3];
            
            filter = [[GPUImageFilterGroup alloc] init];
            
            GPUImageSepiaFilter *sepiaFilter = [[GPUImageSepiaFilter alloc] init];
            [(GPUImageFilterGroup *)filter addFilter:sepiaFilter];

            GPUImagePixellateFilter *pixellateFilter = [[GPUImagePixellateFilter alloc] init];
            [(GPUImageFilterGroup *)filter addFilter:pixellateFilter];
            
            [sepiaFilter addTarget:pixellateFilter];
            [(GPUImageFilterGroup *)filter setInitialFilters:[NSArray arrayWithObject:sepiaFilter]];
            [(GPUImageFilterGroup *)filter setTerminalFilter:pixellateFilter];
        }; break;