Hello!
I have got a problem using vertex arrays because they give me a slowdown (200FPS -> 12FPS). Here my Rendering Code:
Immediate Mode
glBegin(GL_TRIANGLES);
for (int i = 0; i < mesh->num_triangles; i++)
{
glVertexAttrib2fvARB(texcoord_index, mesh->buf_texc[mesh->triangles[i].v0].data_pointer());
glVertexAttrib3fvARB(normal_index, mesh->buf_norm[mesh->triangles[i].v0].data_pointer());
glVertexAttrib3fvARB(tangent_index, mesh->buf_tang[mesh->triangles[i].v0].data_pointer());
glVertexAttrib3fvARB(binormal_index, mesh->buf_bino[mesh->triangles[i].v0].data_pointer());
glVertex3fv(mesh->buf_vert[mesh->triangles[i].v0].data_pointer());
glVertexAttrib2fvARB(texcoord_index, mesh->buf_texc[mesh->triangles[i].v1].data_pointer());
glVertexAttrib3fvARB(normal_index, mesh->buf_norm[mesh->triangles[i].v1].data_pointer());
glVertexAttrib3fvARB(tangent_index, mesh->buf_tang[mesh->triangles[i].v1].data_pointer());
glVertexAttrib3fvARB(binormal_index, mesh->buf_bino[mesh->triangles[i].v1].data_pointer());
glVertex3fv(mesh->buf_vert[mesh->triangles[i].v1].data_pointer());
glVertexAttrib2fvARB(texcoord_index, mesh->buf_texc[mesh->triangles[i].v2].data_pointer());
glVertexAttrib3fvARB(normal_index, mesh->buf_norm[mesh->triangles[i].v2].data_pointer());
glVertexAttrib3fvARB(tangent_index, mesh->buf_tang[mesh->triangles[i].v2].data_pointer());
glVertexAttrib3fvARB(binormal_index, mesh->buf_bino[mesh->triangles[i].v2].data_pointer());
glVertex3fv(mesh->buf_vert[mesh->triangles[i].v2].data_pointer());
}
glEnd();
Vertex Arrays
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glVertexAttribPointerARB(texcoord_index, 2, GL_FLOAT, GL_FALSE, 0, (float*)mesh->buf_texc);
glEnableVertexAttribArrayARB(texcoord_index);
glVertexAttribPointerARB(normal_index, 3, GL_FLOAT, GL_FALSE, 0, (float*)mesh->buf_norm);
glEnableVertexAttribArrayARB(normal_index);
glVertexAttribPointerARB(tangent_index, 3, GL_FLOAT, GL_FALSE, 0, (float*)mesh->buf_tang);
glEnableVertexAttribArrayARB(tangent_index);
glVertexAttribPointerARB(binormal_index, 3, GL_FLOAT, GL_FALSE, 0, (float*)mesh->buf_bino);
glEnableVertexAttribArrayARB(binormal_index);
glVertexPointer(3, GL_FLOAT, 0, (float*)mesh->buf_vert);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawElements(GL_TRIANGLES, mesh->num_triangles*3, GL_UNSIGNED_INT, mesh->buf_ind);
Does anyone has an idea?
Thanks