void MeshGL::draw() const
{
- if(!vao)
- return;
-
glBindVertexArray(vao);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
- glDrawElements(GL_TRIANGLES, num_indices, GL_UNSIGNED_INT, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+ glDrawElements(GL_TRIANGLES, num_indices, GL_UNSIGNED_SHORT, 0);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glBindVertexArray(0);
}
void MeshGL::update_vbo()
{
- if(!num_vertices)
+ if(vertices.empty()) {
+ printf("empty vertices\n");
return;
+ }
/* vao */
if(!vao)
glBufferSubData(GL_ARRAY_BUFFER, 0, tex_coords.size() * sizeof(Vec2), &tex_coords[0]);
glVertexAttribPointer(MESH_TEXTURE, 2, GL_FLOAT, GL_FALSE, sizeof(Vec2), 0);
+ num_vertices = vertices.size();
+
/* indices */
if(!ibo)
&indices[0]);
num_indices = indices.size();
- num_vertices = vertices.size();
glEnableVertexAttribArray(MESH_VERTEX);
glEnableVertexAttribArray(MESH_NORMAL);
glEnableVertexAttribArray(MESH_TEXTURE);
-
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);