iphone - iOS: After changing renderbuffer glCheckFramebufferStatus returns GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES -
i'm making painting application. i'd change sustain add redo , undo functions. can't make complete framebuffer after render something.
caeagllayer* pgllayer = ( caeagllayer* )self.layer; pgllayer.opaque = yes; pgllayer.drawableproperties = [ nsdictionary dictionarywithobjectsandkeys:[ nsnumber numberwithbool:yes ], keagldrawablepropertyretainedbacking, keaglcolorformatrgba8, keagldrawablepropertycolorformat, nil ]; mpglcontext = [ [eaglcontext alloc] initwithapi:keaglrenderingapiopengles1 ]; [ eaglcontext setcurrentcontext:mpglcontext ]; glgenframebuffers( 1, &framebuffer ); glbindframebuffer( gl_framebuffer, framebuffer ); glgenrenderbuffers( 1, &firstcolorbuffer ); glbindrenderbuffer( gl_renderbuffer, firstcolorbuffer ); [ mpglcontext renderbufferstorage:gl_renderbuffer fromdrawable:( caeagllayer* )self.layer ]; glframebufferrenderbuffer( gl_framebuffer, gl_color_attachment0, gl_renderbuffer, firstcolorbuffer ); glorthof( 0.0f, 320.0f, 480.0f, 0.0f, 0.5f, -0.5f ); glviewport( 0, 0, 320, 480 ); // here status gl_framebuffer_complete glenum status = glcheckframebufferstatus( gl_framebuffer ); /** render function **/ glgenrenderbuffers( 1, &secondcolorbuffer ); glbindrenderbuffer( gl_renderbuffer, secondcolorbuffer ); [ mpglcontext renderbufferstorage:gl_renderbuffer fromdrawable:( caeagllayer* )self.layer ]; glframebufferrenderbuffer( gl_framebuffer, gl_color_attachment0, gl_renderbuffer, firstcolorbuffer ); // here status gl_framebuffer_incomplete_attachment_oes glenum status = glcheckframebufferstatus( gl_framebuffer ); glcheckframebufferstatus returns gl_framebuffer_incomplete_attachment_oes. bind renderbuffer. there attachment framebuffer. should fix in code make complete framebuffer.
try replacing call after /** render function **/
glframebufferrenderbuffer( gl_framebuffer, gl_color_attachment0, gl_renderbuffer, firstcolorbuffer ); with
glframebufferrenderbuffer( gl_framebuffer, gl_color_attachment0, gl_renderbuffer, secondcolorbuffer ); you attaching firstcolorbuffer twice , according docummentation end broken attachment:
any previous attachment attachment logical buffer of bound framebuffer object broken.
Comments
Post a Comment