objective c - OpenGL ES iPhone switching from IB to initWithFrame -


hey guys, writing custom view doing opengles rendering. got working when had view in interface builder , set class rendering view, switched creating view initwithframe. (note can set background color of view , see can't render in opengl not clear color) seems getting called , layer class seems ok reason not work outside of directly creating interfacebuilder. ideas?

i have setup code:

+ (class) layerclass {     return [caeagllayer class]; }  - (id)initwithcoder:(nscoder*)coder  {     if (self = [super initwithcoder:coder])      {         [self setupview];     }     return self;  }  - (id)initwithframe:(cgrect)frame {     if (self = [super initwithframe:frame])     {         [self setupview];     }        return self; }  - (void)setupview {     caeagllayer *eagllayer = (caeagllayer *)self.layer;      eagllayer.opaque = yes;     eagllayer.drawableproperties = [nsdictionary dictionarywithobjectsandkeys:                                     [nsnumber numberwithbool:no], keagldrawablepropertyretainedbacking, keaglcolorformatrgba8, keagldrawablepropertycolorformat, nil];      _context = [[eaglcontext alloc] initwithapi:keaglrenderingapiopengles2];      if (!_context || ![eaglcontext setcurrentcontext:_context])     {         nslog(@"error not set context");         [self release];     }      _displaylink = [cadisplaylink displaylinkwithtarget:self selector:@selector(renderview:)];     _displaylink.paused = yes;     _displaylink.frameinterval = fps;      [_displaylink addtorunloop:[nsrunloop mainrunloop] formode:nsdefaultrunloopmode];      [eaglcontext setcurrentcontext:_context];      [self setup]; } 

and layout code.

- (void)layoutsubviews  {     [eaglcontext setcurrentcontext:_context];     [self destroybuffers];     if (![self createbuffers]){         nslog(@"failed create framebuffer!");     }      [self resumerendering]; } 

and rendering code:

- (void)renderview:(cadisplaylink*)sender {     [eaglcontext setcurrentcontext:_context];          glbindframebuffer(gl_framebuffer, _viewframebuffer);          glclearcolor(0.5, 0.5, 0.5, 1.0);          glclear(gl_color_buffer_bit | gl_depth_buffer_bit);                 glenum attachments[] = {gl_depth_attachment, gl_color_attachment0};         gldiscardframebufferext(gl_read_framebuffer_apple, 2, attachments);           glbindrenderbuffer(gl_renderbuffer, _viewrenderbuffer);       [_context presentrenderbuffer:gl_renderbuffer];  } 

i can't figure out why nothing rendering same things getting called. if can me out awesome!

i maybe speculating here switching ib initwithframe has step omitted, loadview in viewcontroller, instantiate custom view class instead of standard view class.


Comments