0
UIViewControler에서 간단한 GPUImage 환경을 설정하려고했습니다. 그러나 빈 화면이 나타납니다. 원본 이미지가 일정하게 유지되는 동안 소용돌이 필터의 속성에 애니메이션을 적용하려고합니다. 어떻게해야합니까?GPUImage를 정지 이미지 소스로 애니메이트하려면 어떻게해야합니까?
대용량 이미지의 경우 좋은 성능 (> 30fps)을 원하므로 GPU에서 CPU로 불필요한 픽셀 사본을 앞뒤로 보내지 않는 것이 이상적입니다. 실제로 설치에 아주 좋은 난 그냥 GPUImagePicture
- (void) displayLinkDidFire:(CADisplayLink*)displayLink
{
self.swirlFilter.angle = [Helper calcProportion];
[self.stillImageSource processImage];
}
GPUImage
에 processImage
에 전화를 실종되고 그것은에 명시된 바와 같이보다 빠른 CoreImage
을 할 솔기 -
- (void)viewDidLoad
{
UIImage *inputImage = [UIImage imageNamed:@"image.jpg"];
self.stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage];
self.swirlFilter = [[GPUImageSwirlFilter alloc] init];
self.swirlFilter.radius = 0.8;
self.filteredImageView =
[[GPUImageView alloc] initWithFrame:
CGRectMake(0.0, 0.0,
self.view.frame.size.width,
self.view.frame.size.height)];
[self.view addSubview:self.filteredImageView];
// GPUImagePicture -> GPUImageFilter -> GPUImageView
[self.stillImageSource addTarget:self.swirlFilter];
[self.swirlFilter addTarget:self.filteredImageView];
NSAssert(inputImage && _stillImageSource && _swirlFilter && _filteredImageView,
@"Something unexpected is nil");
}
// Set up a the display link in View Did appear
- (void) displayLinkDidFire:(CADisplayLink*)displayLink
{
CGFloat proportion =
[RSHelper proportionForTime:[[NSDate date] timeIntervalSinceReferenceDate]];
self.swirlFilter.angle = proportion;
// Do I need to call some kind of update call here?
}
코어 이미지가 iOS 6에서 상당히 빠르기 때문에 벤치 마크를 다시해야 할 수도 있습니다. 세피아 필터가 이상하다고 생각한만큼 많은 사과 - 사과 테스트를 수행하지 않았습니다. 흥미로운 이유로 Core Image에서). Core Image는 응용 프로그램이 백그라운드로 들어갈 때 CPU에서 실행할 수 있다는 이점이 있습니다. –
@BradLarson 당신은 나를 확신 할 수 없었습니다. :) CoreImage와 GPUImage를 모두 시험해 보았습니다. CoreImage가 프레임을 더 떨어 뜨리는 것처럼 솔기가났습니다. 일부 성능 향상 기능을 놓친 것 같습니다. CPU에서 실행하는 이점은 무엇입니까? 스레드 안전과 관련이 있습니까? – Robert
응용 프로그램이 백그라운드에있을 때 GPU에서 작업을 수행 할 수 없습니다. 시도하면 응용 프로그램이 즉시 삭제됩니다. –