c++ - opengl release memory after calling glBufferData causes the data not to display -


i drawing in opengl using indexed drawing. sending vertices & indexes graphic card, , trying release local buffers. releasing vertices buffer - no problem, if release index buffer, nothing displayed.

putting simply, code works:

glgenbuffers(1, &m_vbo); glbindbuffer(gl_array_buffer, m_vbo); glbufferdata(gl_array_buffer, m_vertices.size()*6*sizeof(float), m_vertices.data(),gl_static_draw);   m_vertices.clear(); m_vertices.shrink_to_fit();  glgenbuffers(1, &m_ibo); glbindbuffer(gl_element_array_buffer, m_ibo);    glbufferdata(gl_element_array_buffer, m_triangleindeces.size() * sizeof(glsizei), m_triangleindeces.data(), gl_static_draw);   //  m_triangleindeces.clear(); //  m_triangleindeces.shrink_to_fit(); 

but if un-remark last 2 lines - nothing displayed.

i tried release buffer after first rendering, same phenomena occured.

i understood once opengl buffers data, if driver or graphic card, local copy of free me abuse, puzzled.

i working on windows 10. device manager says have "amd radeon (tm) r7 m360", , "intel hd graphics 520", whatever means.

yes, opengl implementation should indeed perform copy of data.

this driver bug.
since seem have 2 gpus, assume you're running application on intel gpu default (intel famous having bad gpu drivers). did try testing on both gpus? , gpu drivers date?


Comments