ios6 - iOS 6 OpenGL ES 2.0 video memory leak in a render buffer object -


below example code behaves 1 leaking video memory on ipad 2 ios 6.1 (basically creates render buffer object, allocates memory , destroys after drawing):

if put draw loop see lots of memory warnings , application killed os. instruments give no hints , cannot see memory size growth, memory warnings.

i understand creating buffers in draw loop bad idea, buffer needs recreated anyway in case if user rotates device , resolution changes leak remain need more time kill app (also looks springboard restarts when application killed).

so example below way reproduce problem hidden, think. glad here ideas on what's wrong here , how leak can fixed.

there several things tried (see commented code) nothing helped. thing helps commenting of glclear , gldrawarrays calls.

looks gpu doesn't touch render buffer in case , problem disappears, need clear buffer , draw (the reason why need buffer next:

i try implement multi-sampled rendering texture, works in fact, leaks memory). check glgeterror() after every gl call , no errors appear.

gluint rbo; glgenrenderbuffers(1, &rbo); glbindrenderbuffer(gl_renderbuffer, rbo); //glrenderbufferstoragemultisampleapple(gl_renderbuffer, 4, gl_rgba4, 2000 , 2000); glrenderbufferstorage(gl_renderbuffer, gl_rgba4, 2000 , 2000);  /*gluint fbo_faa; glgenframebuffers(1, &fbo_faa);*/ glbindframebuffer(gl_framebuffer, defaultframebuffer/*fbo_faa*/); glframebufferrenderbuffer(gl_framebuffer, gl_color_attachment0, gl_renderbuffer, rbo);  glclearcolor(0, 0, 0, 0); glclear(gl_color_buffer_bit); gldrawarrays(gl_triangle_strip, 0, 4);  glframebufferrenderbuffer(gl_framebuffer, gl_color_attachment0, gl_renderbuffer, 0); gldeleterenderbuffers(1, &rbo); 

i see doing , have no idea why code works in 1 of projects. anyway, seem keep attaching render buffers frame buffer. best guess not deleted did not signal gl render buffers no longer in use. need discard attachments , reattach main render buffer.. try pasting code , tell me how turns out..

    gluint rbo;     glgenrenderbuffers(1, &rbo);     glbindrenderbuffer(gl_renderbuffer, rbo);     //glrenderbufferstoragemultisampleapple(gl_renderbuffer, 4, gl_rgba4, 2000 , 2000);     glrenderbufferstorage(gl_renderbuffer, gl_rgba4, 2000 , 2000);      /*gluint fbo_faa;      glgenframebuffers(1, &fbo_faa);*/     glbindframebuffer(gl_framebuffer, defaultframebuffer/*fbo_faa*/);     glframebufferrenderbuffer(gl_framebuffer, gl_color_attachment0, gl_renderbuffer, rbo);      glclearcolor(0, 0, 0, 0);     glclear(gl_color_buffer_bit);     gldrawarrays(gl_triangle_strip, 0, 4);      const glenum discards[]  = {gl_color_attachment0};     gldiscardframebufferext(gl_framebuffer, 1, discards);      gldeleterenderbuffers(1, &rbo);      glframebufferrenderbuffer(gl_framebuffer, gl_color_attachment0, gl_renderbuffer, colorrenderbuffer);     glbindrenderbuffer(gl_renderbuffer, colorrenderbuffer); 

Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -