c++ - Trouble with rendering from VBO -
i have vbo, ibo , vao set so:
void createvbo() { // create ibo , vbo data gluint* ibodata = new gluint[m_zindexcount]; vertex* vbodata = new vertex[m_zvertexcount]; int ibopos = 0; int vbopos = 0; // create vbo , ibo for(int = 0; < m_zfragmap[0x36]; i++) { // copy data ibo memcpy(&ibodata[ibopos], m_zmeshes[i]->m_indices, m_zmeshes[i]->m_polycount * 3 * sizeof(gluint));//sizeof(*zonemeshes[i].indices)); // advance position ibopos += m_zmeshes[i]->m_polycount * 3; // copy data vbo memcpy(&vbodata[vbopos], m_zmeshes[i]->m_vertices, m_zmeshes[i]->m_vertcount * sizeof(vertex));//sizeof(*zonemeshes[i].vertices)); // advance position vbopos += m_zmeshes[i]->m_vertcount; } glgenbuffers(1, &m_zvbo); glbindbuffer(gl_array_buffer, m_zvbo); glbufferdata(gl_array_buffer, m_zvertexcount * sizeof(vertex), vbodata, gl_static_draw); glbindbuffer(gl_array_buffer, 0); glgenbuffers(1, &m_zibo); glbindbuffer(gl_element_array_buffer, m_zibo); glbufferdata(gl_element_array_buffer, m_zindexcount * sizeof(gluint), ibodata, gl_static_draw); glbindbuffer(gl_element_array_buffer, 0); // create vao glgenvertexarrays(1, &m_zvao); glbindvertexarray(m_zvao); glbindbuffer(gl_array_buffer, m_zvbo); glenablevertexattribarray(0); glvertexattribpointer(0, 3, gl_float, gl_false, sizeof(vertex), 0); glenablevertexattribarray(1); glvertexattribpointer(1, 3, gl_float, gl_false, sizeof(vertex), buffer_offset(sizeof(float) * 3)); glenablevertexattribarray(2); glvertexattribpointer(2, 2, gl_float, gl_false, sizeof(vertex), buffer_offset(sizeof(float) * 6)); glenablevertexattribarray(3); glvertexattribpointer(3, 4, gl_float, gl_false, sizeof(vertex), buffer_offset(sizeof(float) * 8)); glbindbuffer(gl_element_array_buffer,m_zibo); glbindvertexarray(0); } i have output data in vbo , ibo data , has copies correctly.
i send camera matrix shader(i have tested simple triangle , has worked).
here render (shader set , working):
// bind vao glbindvertexarray(zone->m_zvao); gldrawelements(gl_triangles, zone->m_zindexcount, gl_unsigned_int, (void*)(0)); it looks there problem in copying ibo or vbo. see fishy code?
Comments
Post a Comment