UIViewControler で単純な GPUImage 環境をセットアップしようとしました。ただし、空白の画面が表示されます。ソース画像を一定に保ちながら、渦巻きフィルターのプロパティをアニメーション化したいと考えています。これどうやってするの?
大規模なイメージに対して良好なパフォーマンス (> 30 fps) が必要なため、理想的には、GPU から CPU への不必要なピクセル コピーを回避したいと考えています。
- (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?
}