1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #import "DisplayViewController.h"
- @interface DisplayViewController ()
- @end
- @implementation DisplayViewController
- - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
- {
- self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
- if (self) {
- // Custom initialization
- }
-
- return self;
- }
- - (void)dealloc
- {
- [renderer release];
-
- [super dealloc];
- }
- - (void)loadView
- {
- CGRect mainScreenFrame = [[UIScreen mainScreen] applicationFrame];
- GPUImageView *primaryView = [[[GPUImageView alloc] initWithFrame:mainScreenFrame] autorelease];
- self.view = primaryView;
- renderer = [[ES2Renderer alloc] initWithSize:[primaryView sizeInPixels]];
- textureInput = [[GPUImageTextureInput alloc] initWithTexture:renderer.outputTexture size:[primaryView sizeInPixels]];
- filter = [[GPUImagePixellateFilter alloc] init];
- [(GPUImagePixellateFilter *)filter setFractionalWidthOfAPixel:0.01];
- // filter = [[GPUImageGaussianBlurFilter alloc] init];
- // [(GPUImageGaussianBlurFilter *)filter setBlurSize:3.0];
- [textureInput addTarget:filter];
- [filter addTarget:primaryView];
-
- [renderer setNewFrameAvailableBlock:^{
- float currentTimeInMilliseconds = [[NSDate date] timeIntervalSinceDate:startTime] * 1000.0;
-
- [textureInput processTextureWithFrameTime:CMTimeMake((int)currentTimeInMilliseconds, 1000)];
- }];
-
- [renderer startCameraCapture];
- }
- - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
- {
- return (interfaceOrientation == UIInterfaceOrientationPortrait);
- }
- - (void)drawView:(id)sender
- {
- [renderer renderByRotatingAroundX:0 rotatingAroundY:0];
- }
- #pragma mark -
- #pragma mark Touch-handling methods
- - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- {
- NSMutableSet *currentTouches = [[[event touchesForView:self.view] mutableCopy] autorelease];
- [currentTouches minusSet:touches];
-
- // New touches are not yet included in the current touches for the view
- lastMovementPosition = [[touches anyObject] locationInView:self.view];
- }
- - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- {
- CGPoint currentMovementPosition = [[touches anyObject] locationInView:self.view];
- [renderer renderByRotatingAroundX:(currentMovementPosition.x - lastMovementPosition.x) rotatingAroundY:(lastMovementPosition.y - currentMovementPosition.y)];
- lastMovementPosition = currentMovementPosition;
- }
- - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
- {
- NSMutableSet *remainingTouches = [[[event touchesForView:self.view] mutableCopy] autorelease];
- [remainingTouches minusSet:touches];
-
- lastMovementPosition = [[remainingTouches anyObject] locationInView:self.view];
- }
- - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
- {
- // Handle touches canceled the same as as a touches ended event
- [self touchesEnded:touches withEvent:event];
- }
- @end
|