nuclear@0: #import "viewctl.h" nuclear@0: #import nuclear@0: nuclear@0: @interface ViewController () { nuclear@0: EAGLContext *ctx; nuclear@1: nuclear@1: ADBannerView *ad; nuclear@1: BOOL ad_visible; nuclear@0: } nuclear@0: nuclear@1: nuclear@1: - (void)create_ad; nuclear@1: nuclear@1: - (void)init_gl; nuclear@1: - (void)destroy_gl; nuclear@0: @end nuclear@0: nuclear@0: @implementation ViewController nuclear@0: nuclear@0: - (void)viewDidLoad nuclear@0: { nuclear@0: [super viewDidLoad]; nuclear@0: nuclear@0: self->ctx = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2]; nuclear@0: if(!self->ctx) { nuclear@0: NSLog(@"Failed to create OpenGL ES 2.0 context"); nuclear@0: } nuclear@0: nuclear@0: GLKView *view = (GLKView*)self.view; nuclear@0: view.context = self->ctx; nuclear@0: view.drawableDepthFormat = GLKViewDrawableDepthFormat24; nuclear@0: nuclear@1: [self create_ad]; nuclear@1: nuclear@1: nuclear@1: [self init_gl]; nuclear@0: } nuclear@0: nuclear@0: - (void)dealloc nuclear@0: { nuclear@1: [self destroy_gl]; nuclear@0: nuclear@0: if([EAGLContext currentContext] == self->ctx) { nuclear@0: [EAGLContext setCurrentContext: nil]; nuclear@0: } nuclear@0: } nuclear@0: nuclear@0: - (void)didReceiveMemoryWarning nuclear@0: { nuclear@0: [super didReceiveMemoryWarning]; nuclear@0: nuclear@0: if([self isViewLoaded] && ([[self view] window] == nil)) { nuclear@0: self.view = nil; nuclear@0: nuclear@1: [self destroy_gl]; nuclear@0: nuclear@0: if([EAGLContext currentContext] == self->ctx) { nuclear@0: [EAGLContext setCurrentContext: nil]; nuclear@0: } nuclear@0: self->ctx = nil; nuclear@0: } nuclear@0: nuclear@0: // Dispose of any resources that can be recreated. nuclear@0: } nuclear@0: nuclear@0: - (BOOL)prefersStatusBarHidden nuclear@0: { nuclear@0: return YES; nuclear@0: } nuclear@0: nuclear@1: - (void)create_ad nuclear@1: { nuclear@1: ad_visible = NO; nuclear@1: ad = [[ADBannerView alloc] initWithAdType: ADAdTypeBanner]; nuclear@1: [ad setAutoresizingMask: UIViewAutoresizingFlexibleWidth]; nuclear@1: ad.frame = CGRectOffset(ad.frame, 0, -ad.frame.size.height); nuclear@1: [self.view addSubview: ad]; nuclear@1: ad.delegate = self; nuclear@1: } nuclear@1: nuclear@1: - (void)init_gl nuclear@0: { nuclear@0: [EAGLContext setCurrentContext: self->ctx]; nuclear@0: nuclear@0: glClearColor(1.0, 0.0, 0.0, 1.0); nuclear@0: } nuclear@0: nuclear@1: - (void)destroy_gl nuclear@0: { nuclear@0: [EAGLContext setCurrentContext: self->ctx]; nuclear@0: } nuclear@0: nuclear@0: nuclear@0: - (void)glkView: (GLKView*)view drawInRect: (CGRect)rect nuclear@0: { nuclear@0: glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); nuclear@0: } nuclear@0: nuclear@1: // ADBannerDelegate functions nuclear@1: nuclear@1: - (void)bannerViewDidLoadAd: (ADBannerView*)banner nuclear@1: { nuclear@1: if(!ad_visible) { nuclear@1: CGRect rect = ad.frame; nuclear@1: rect.origin.y = 0; nuclear@1: ad.frame = rect; nuclear@1: ad_visible = YES; nuclear@1: } nuclear@1: } nuclear@1: nuclear@1: - (void)bannerView: (ADBannerView*)banner didFailToReceiveAdWithError: (NSError*)error nuclear@1: { nuclear@1: if(ad_visible) { nuclear@1: ad_visible = NO; nuclear@1: ad.frame = CGRectOffset(ad.frame, 0, -ad.frame.size.height); nuclear@1: } nuclear@1: nuclear@1: NSLog(@"Failed to retrieve ad"); nuclear@1: } nuclear@1: nuclear@1: nuclear@0: @end /* implementation ViewController */