What a piece of crap, I don`t know what the heck is going on but I`m getting 27 FPS now :(
To give code, here`s the common functions->
void REM::CreateBuffers(){ //Vertex Array glGenBuffers(1,&BufferID[0]); glBindBuffer(GL_ARRAY_BUFFER_ARB,BufferID[0]); glBufferData(GL_ARRAY_BUFFER_ARB, sizeof(Vector3)*nrverts, Vertices, GL_STATIC_DRAW_ARB); //TexCoord Array glGenBuffers(1,&BufferID[1]); glBindBuffer(GL_ARRAY_BUFFER_ARB,BufferID[1]); glBufferData(GL_ARRAY_BUFFER_ARB, sizeof(Vector2)*nrverts, Texels[0], GL_STATIC_DRAW_ARB); //Normals glGenBuffers(1,&BufferID[2]); glBindBuffer(GL_ARRAY_BUFFER_ARB,BufferID[2]); glBufferData(GL_ARRAY_BUFFER_ARB, sizeof(Vector3)*nrverts, Normals, GL_STATIC_DRAW_ARB); //Indices glGenBuffers(1,&BufferID[3]); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB,BufferID[3]); glBufferData(GL_ELEMENT_ARRAY_BUFFER_ARB, sizeof(WORD)*nrindices, Indices2, GL_STATIC_DRAW_ARB); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB,0); glBindBuffer(GL_ARRAY_BUFFER_ARB,0);}void REM::SetBufferArrays(){ glEnableClientState(GL_NORMAL_ARRAY); glBindBuffer(GL_ARRAY_BUFFER_ARB,BufferID[2]); glNormalPointer(GL_FLOAT,0,NULL);//Normals); // glClientActiveTextureARB(GL_TEXTURE0_ARB); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glBindBuffer(GL_ARRAY_BUFFER_ARB,BufferID[1]); glTexCoordPointer(2,GL_FLOAT,0,NULL);//Texels[0]); // glClientActiveTextureARB(GL_TEXTURE1_ARB); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glBindBuffer(GL_ARRAY_BUFFER_ARB,BufferID[1]); glTexCoordPointer(2,GL_FLOAT,0,NULL);//Texels[0]); // glClientActiveTextureARB(GL_TEXTURE2_ARB); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glBindBuffer(GL_ARRAY_BUFFER_ARB,BufferID[1]); glTexCoordPointer(2,GL_FLOAT,0,NULL); // glEnableClientState(GL_VERTEX_ARRAY); glBindBuffer(GL_ARRAY_BUFFER_ARB,BufferID[0]); glVertexPointer(3,GL_FLOAT,0,NULL); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB,BufferID[3]);}void REM::RenderObjects(UINT group){ for(int j=0;j<Group[group].nr;j++) if (Object[Group[group].Object[j].Index].nrindices>0) { if (!use_range) { glDrawElements(GL_TRIANGLES,Object[Group[group].Object[j].Index].nrindices,GL_UNSIGNED_SHORT, (char*)(NULL+Object[Group[group].Object[j].Index].offset*sizeof(WORD)) ); } else { glDrawRangeElements(GL_TRIANGLES, Object[Group[group].Object[j].Index].min_off, Object[Group[group].Object[j].Index].max_off, Object[Group[group].Object[j].Index].nrindices, GL_UNSIGNED_SHORT, (char*)(NULL+Object[Group[group].Object[j].Index].offset*sizeof(WORD)) ); } } }
EDIT:Made some modifications, Element Array is only binded once, so now I get from 3 to 27 FPS :D, instead of my original 160 :D