2013-07-28 2 views
0

UIViewControler에서 간단한 GPUImage 환경을 설정하려고했습니다. 그러나 빈 화면이 나타납니다. 원본 이미지가 일정하게 유지되는 동안 소용돌이 필터의 속성에 애니메이션을 적용하려고합니다. 어떻게해야합니까?GPUImage를 정지 이미지 소스로 애니메이트하려면 어떻게해야합니까?

대용량 이미지의 경우 좋은 성능 (> 30fps)을 원하므로 GPU에서 CPU로 불필요한 픽셀 사본을 앞뒤로 보내지 않는 것이 이상적입니다. 실제로 설치에 아주 좋은 난 그냥 GPUImagePicture

- (void) displayLinkDidFire:(CADisplayLink*)displayLink 
{ 
    self.swirlFilter.angle = [Helper calcProportion]; 
    [self.stillImageSource processImage]; 
} 

GPUImageprocessImage에 전화를 실종되고 그것은에 명시된 바와 같이보다 빠른 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? 
} 

답변

1

이 좋아 내가 대답을 발견 GPUImage docs. 일부 애플의 기술에 대해 써드 파티 라이브러리를 사용하는 것이 어려울 지 모르지만, CoreImage는 이점이나 이점이 없습니다.

+0

코어 이미지가 iOS 6에서 상당히 빠르기 때문에 벤치 마크를 다시해야 할 수도 있습니다. 세피아 필터가 이상하다고 생각한만큼 많은 사과 - 사과 테스트를 수행하지 않았습니다. 흥미로운 이유로 Core Image에서). Core Image는 응용 프로그램이 백그라운드로 들어갈 때 CPU에서 실행할 수 있다는 이점이 있습니다. –

+0

@BradLarson 당신은 나를 확신 할 수 없었습니다. :) CoreImage와 GPUImage를 모두 시험해 보았습니다. CoreImage가 프레임을 더 떨어 뜨리는 것처럼 솔기가났습니다. 일부 성능 향상 기능을 놓친 것 같습니다. CPU에서 실행하는 이점은 무엇입니까? 스레드 안전과 관련이 있습니까? – Robert

+1

응용 프로그램이 백그라운드에있을 때 GPU에서 작업을 수행 할 수 없습니다. 시도하면 응용 프로그램이 즉시 삭제됩니다. –

관련 문제