응용 프로그램의 상황에 따라 GPUImageFilterPipeline 클래스를 고려할 수도 있습니다.
브래드가 참조하는 모든 중간 대상을 추가하고 제거하는 일을 처리합니다.
이러한 필터를 반복적으로 설정/해체하는 것이 문제가되지만 수업 시간 동안 메모리에 유지하는 것이 아니라면 파이프 라인을 감상 할 수 있습니다.
당신이 제공하는 무엇, 그것은 이런 식으로 뭔가 보일 수 있습니다 대략 기반으로 : 나는 동적으로 다음 실행시에 필터 세트를 생성하고있을 때 파이프 라인에 대한
- (void)configureSomeArraysOfFilters {
_setNumberOne = [[NSMutableArray alloc] init]; //make sure these arrays are at least scoped to the class, if not actual @properties
GPUImageKuwaharaFilter* kuwahara = [[GPUImageKuwaharaFilter alloc] init];
[kuwahara setRadius:5];
GPUImageGrayscaleFilter* gray = [[GPUImageGrayscaleFilter alloc] init];
[_setNumberOne addObject:kuwahara];
[_setNumberOne addObject:gray];
_setNumberTwo = [[NSMutableArray alloc] init];
GPUImageGrayscaleFilter* otherGray = [[GPUImageGrayscaleFilter alloc] init];
GPUImageGaussianBlurFilter* blur = [[GPUImageGaussianBlurFilter alloc] init];
[blur setBlurSize:3];
GPUImageColorInvertFilter* invert = [[GPUImageColorInvertFilter alloc] init];
[_setNumberTwo addObject:otherGray];
[_setNumberTwo addObject:blur];
[_setNumberTwo addObject:invert];
}
- (void)configureAnEmptyPipeline {
if (_samplePipeline == nil) {
GPUImageFilter* passthrough = [[GPUImageFilter alloc] init];
NSArray* empty = [NSArray arrayWithObjects:passthrough, nil];
_samplePipeline = [[GPUImageFilterPipeline alloc] initWithOrderedFilters:empty input:videoCamera output:_filteredVideoView];
[videoCamera startCameraCapture];
}
}
- (void)updateFilterPipeline:(NSInteger)style {
switch (style) {
case 1:
[_samplePipeline replaceAllFilters:_setNumberOne];
break;
case 2:
[_samplePipeline replaceAllFilters:_setNumberTwo];
//add as many more cases as you have defined Arrays full of filters for
default:
break;
}
}
내가 가장 좋아하는 사용 사례를, 그러나,이다 그들을 행동으로 전환. 이를 통해 필터를 순서대로 저장 한 다음 매 필터마다 모든 대상을 지정할 필요없이 파이프 라인으로 전달할 수 있습니다.
모든 상황에 적합하지는 않지만 GPUImageFilterPipeline은 경우에 따라 매우 유용 할 수 있습니다.
이전 필터를 비디오 카메라의 대상으로 제거하거나 이전 필터 체인의 대상으로 비디오보기를 제거하는 것을 보지 못했습니다. 이 작업을 수행하는 방법에 대한 Mac FilterShowcase 예제를 참조하십시오. 또는 비디오가 하나의 소스에서 여러 필터 체인으로 계속 공급됩니다. –
알았습니다. 고맙습니다! – Loozie