i've searched answer on google , here. i've found similar issues, not issue , no answer. i'm new xcode , apple development , i've inherited project after our apple developer left.
this using cocos2d v0.99.4-rc3, ios 8.3, xcode 6.3.2. also, worked on ios 7.1 , before upgraded xcode. upgraded both xcode , ios on ipad @ same time.
in code below, backingwidth_ , backingheight_ set 1536 , 2048 on ipad retina, set 0 on ipad air.
when call glgeterror() after renderbufferstorage executed, 0x0501 (gl_invalid_value) returned on air, 0x0000 returned on retina, think there issue renderbufferstorage when 'layer' passed air. call glgeterror() after glbindrenderbufferoes() executed returns 0x0000 both air , retina. have arm64, armv7, , armv7s listed valid architectures in build settings; armv7 , arm64 shown in first line shows architectures, right above base sdk.
- (bool)resizefromlayer:(caeagllayer *)layer { // allocate color buffer backing based on current layer size glbindrenderbufferoes(gl_renderbuffer_oes, colorrenderbuffer_); [context_ renderbufferstorage:gl_renderbuffer_oes fromdrawable:layer]; //this fine on ipad retina causes error air glenum_error = glgeterror(); //this returns 0x0501 (gl_invalid_value)on ipad air, 0x0000 on retina. glgetrenderbufferparameterivoes(gl_renderbuffer_oes, gl_renderbuffer_width_oes, &backingwidth_); //equals 1536 on retina, 0 on air glgetrenderbufferparameterivoes(gl_renderbuffer_oes, gl_renderbuffer_height_oes, &backingheight_); //equals 2048 on retina, 0 on air if (glcheckframebufferstatusoes(gl_framebuffer_oes) != gl_framebuffer_complete_oes) //this fails, resizefromlayer returns no. { nslog(@"failed make complete framebuffer object %x", glcheckframebufferstatusoes(gl_framebuffer_oes)); return no; } resizefromlayer called layoutsubviews()
- (void) layoutsubviews { [renderer_ resizefromlayer:(caeagllayer*)self.layer]; size_ = [renderer_ backingsize]; // avoid flicker. issue #350 [[ccdirector shareddirector] drawscene]; } has else experienced , how did correct it. 1 entry on here discussed destroying frame buffer , creating new frame buffer inside of resizefromlayer when getting black screen, wasn't specific air. haven't tried yet, , if works, post possible solution. comments on solution said mask real underlying problem, why i'm asking this.
the application code builds on both retina , air, on ipad , in simulator, air shows black screen, since failing in resize.
since no 1 responded, took me while figure out, since i'm new xcode, ios, , cocos2d. issue turned out 64bit/32bit issue older cocos2d version being used. coordinate offsets being calculated wrong , image size being returned 0. there float/double mismatch not have occurred if cocos2d had been upgraded newer version.
Comments
Post a Comment