Hey.
I've been trying to get my rendering working but I'm sure I'm missing something and I can't see what I'm doing wrong here..
struct Model_OBJ
{
vector<GLfloat> vertices;
vector<GLushort> elements;
GLuint vbo_vertices;
GLuint ibo;
};
Init:
glGenBuffers(1,&Model[i].ibo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,Model[i].ibo);
glBufferData(GL_ELEMENT_ARRAY_BUFFER,Model[i].elements.size() * sizeof(GLushort),Model[i].elements.data(),GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);
glGenBuffers(1,&Model[i].vbo_vertices);
glBindBuffer(GL_ARRAY_BUFFER,Model[i].vbo_vertices);
glBufferData(GL_ARRAY_BUFFER,Model[i].vertices.size() * sizeof(GLfloat),Model[i].vertices.data(),GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER,0);
Render: this doesn't draw the model
void CCore::DrawModel(Model_OBJ model, float x, float y, float z)
{
...
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,model.ibo);
glBindBuffer(GL_ARRAY_BUFFER,model.vbo_vertices);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3,GL_FLOAT,0,&model.vertices.front());
glDrawElements(GL_TRIANGLES,model.elements.size(),GL_UNSIGNED_SHORT,NULL);
glDisableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER,0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);
...
}
Render (alternative): this draws the model
void CCore::DrawModel(Model_OBJ model, float x, float y, float z)
{
...
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,model.ibo);
//glBindBuffer(GL_ARRAY_BUFFER,model.vbo_vertices);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3,GL_FLOAT,0,&model.vertices.front());
glDrawElements(GL_TRIANGLES,model.elements.size(),GL_UNSIGNED_SHORT,NULL);
glDisableClientState(GL_VERTEX_ARRAY);
//glBindBuffer(GL_ARRAY_BUFFER,0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);
...
}
Am I storing the VBO data somehow wrong? I've googled alot but I can't figure out what's the problem.