X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fopengl%2Fmesh-gl.cc;h=6175aae985586d626c5ae4c5c5893879332a53fc;hb=ecb47604bb2b8ab3ac5a133e78ef6cb19a20d9cc;hp=f0956b4470295a593c9b6feef30ed3d7b3a2f8fd;hpb=243eb502c5dc70e586a9e81815234069bf623480;p=demo diff --git a/src/opengl/mesh-gl.cc b/src/opengl/mesh-gl.cc index f0956b4..6175aae 100644 --- a/src/opengl/mesh-gl.cc +++ b/src/opengl/mesh-gl.cc @@ -73,6 +73,9 @@ MeshGL::~MeshGL() void MeshGL::draw() const { + if(!vdata_valid) { + ((MeshGL *)this)->update_vertex_data(); + } glBindVertexArray(vao); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo); @@ -90,12 +93,11 @@ void MeshGL::draw_normals(float scale) const glGenBuffers(1, &nvbo); glBindBuffer(GL_ARRAY_BUFFER, nvbo); - + glBufferData(GL_ARRAY_BUFFER, normals.size() * sizeof(Vec3) * 2, 0, GL_STATIC_DRAW); Vec3 *data = (Vec3 *)glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY); - for (size_t i = 0; i < normals.size(); i++) - { + for(size_t i = 0; i < normals.size(); i++) { *data++ = vertices[i]; *data++ = vertices[i] + normals[i] * scale; } @@ -104,7 +106,8 @@ void MeshGL::draw_normals(float scale) const glVertexAttribPointer(MESH_VERTEX, 3, GL_FLOAT, GL_FALSE, sizeof(Vec3), 0); glEnableVertexAttribArray(MESH_VERTEX); glBindBuffer(GL_ARRAY_BUFFER, 0); - } else { + } + else { glBindVertexArray(nvao); } @@ -201,7 +204,7 @@ void MeshGL::destroy_vbo() glDeleteBuffers(1, &vbo_tex_coords); if(ibo) glDeleteBuffers(1, &ibo); - if (vao) + if(vao) glDeleteVertexArrays(1, &vao); if(nvbo)