Compare commits

..
4 Commits
2 changed files with 7 additions and 7 deletions

No files matched your search

+1 -1
View File
@@ -1,4 +1,4 @@
WFObj version 2.0-dev WFObj version 2.0
Author: Josh Holtrop Author: Josh Holtrop
This utility uses OpenGL vertex buffer objects to render an Alias Wavefront This utility uses OpenGL vertex buffer objects to render an Alias Wavefront
+6 -6
View File
@@ -518,7 +518,6 @@ bool WFObj::buildVBO()
it++) it++)
{ {
int first = vid; int first = vid;
int num = 0;
for (vector<Face>::iterator fit = it->second.begin(); for (vector<Face>::iterator fit = it->second.begin();
fit != it->second.end(); fit != it->second.end();
fit++) fit++)
@@ -527,18 +526,19 @@ bool WFObj::buildVBO()
{ {
VertexRef vf = fit->vertices[i]; VertexRef vf = fit->vertices[i];
indices[vid] = flat_vertices[vf]; indices[vid] = flat_vertices[vf];
num++;
vid++; vid++;
} }
} }
m_face_indices[it->first] = make_pair(first, num); m_face_indices[it->first] = make_pair(first, vid - first);
} }
glGenBuffers(1, &m_data_vbo); glGenBuffers(1, &m_data_vbo);
glGenBuffers(1, &m_index_vbo); glGenBuffers(1, &m_index_vbo);
/* move data from client side to GL */ /* move data from client side to GL */
glBufferData(m_data_vbo, sizeof(GLfloat) * n_data_elements, data, glBindBuffer(GL_ARRAY_BUFFER, m_data_vbo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_index_vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * n_data_elements, data,
GL_STATIC_DRAW); GL_STATIC_DRAW);
glBufferData(m_index_vbo, sizeof(GLshort) * n_vrefs, indices, glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLshort) * n_vrefs, indices,
GL_STATIC_DRAW); GL_STATIC_DRAW);
delete[] data; delete[] data;
delete[] indices; delete[] indices;
@@ -571,7 +571,7 @@ void WFObj::draw()
renderMaterial(m_materials[it->first]); renderMaterial(m_materials[it->first]);
glDrawElements(GL_TRIANGLES, m_face_indices[it->first].second, glDrawElements(GL_TRIANGLES, m_face_indices[it->first].second,
GL_UNSIGNED_SHORT, GL_UNSIGNED_SHORT,
(GLvoid *) (sizeof(GLfloat) * m_face_indices[it->first].first)); (GLvoid *) (sizeof(GLshort) * m_face_indices[it->first].first));
glPopAttrib(); glPopAttrib();
} }
glPopClientAttrib(); glPopClientAttrib();