After searching all night and morning on the web, I didn't seem to find the answer to my problem. So I hope you guys can help me on this.
The problem is that I try to load an .obj file and draw it using VBOs. The problem is.. A simple cube ends up like this:
Now this is the front view, not the side.. obviously, this is not correct.
This is the way I try to do it:
Rld::Mesh::Mesh( String a_FileName, String a_Name )
{
glGenBuffers(1, &m_VertexBuffer);
glGenBuffers(1, &m_UVBuffer);
glGenBuffers(1, &m_NormalBuffer);
glGenBuffers(1, &m_IndexBuffer);
m_Name = a_Name;
Load(a_FileName);
glBindBuffer(GL_ARRAY_BUFFER, m_VertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(float3) * m_Vertices.size(), &m_Vertices[0], GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, m_NormalBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(float3) * m_Normals.size(), &m_Normals[0], GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, m_UVBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(float2) * m_UVs.size(), &m_UVs[0], GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_IndexBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned int) * m_Indices.size(), &m_Indices[0], GL_STATIC_DRAW);
glBindBuffer( GL_ARRAY_BUFFER, 0 );
glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 );
}
void Rld::Mesh::Render()
{
glColor3f(1.0f, 0.0f, 0.0f);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, m_VertexBuffer);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(1);
glBindBuffer( GL_ARRAY_BUFFER, m_NormalBuffer );
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(2);
glBindBuffer( GL_ARRAY_BUFFER, m_UVBuffer );
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, m_IndexBuffer );
glDrawElements( GL_TRIANGLES, m_Indices.size(), GL_UNSIGNED_INT, 0 );
//glDrawArrays( GL_TRIANGLES, 0, m_Vertices.size());
glDisableVertexAttribArray(2);
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(0);
glBindBuffer( GL_ARRAY_BUFFER, 0 );
glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 );
}
From what I know, this should work. I also already checked the data and everything (vertex and index data) seems to be alright.
Any pointers in the good direction would be much appreciated
Edit:
Perhaps handy to mention that m_***Buffer are unsigned ints, the containers that hold the data are std::vector containers and float2/float3 hold nothing more than 2/3 float (x, y and x, y, z)