Vad är skillnaden mellan debug och release när man kompilerar?
Jag får enorma prestandaskillnader mellan debug och release. I debug får jag kanske 8-10 fps medans jag i release fpr 250 fps. Det är helt omöjligt att testa programmet i Debug mode med den prestandan. Med tanke på den enorma skillnaden så antar jag att nåt kompileras lite konstigt i debug mode.
Den del av koden som utgör hela skillnaden är denna:
void CModel::Render()
{
// glColor3ub(120,120,120);
for (u_int32_t n=0; n < objects.size(); n++)
{
glPushMatrix();
if (objects[n].tX != 0 || objects[n].tY != 0 || objects[n].tZ != 0)
{
glTranslatef(objects[n].tX, objects[n].tY, objects[n].tZ);
}
if (objects[n].rA != 0 || objects[n].rX != 0 || objects[n].rY != 0 || objects[n].rZ != 0)
{
glRotatef(objects[n].rA, objects[n].rX, objects[n].rY, objects[n].rZ);
}
if (objects[n].sX != 0 || objects[n].sY != 0 || objects[n].sZ != 0)
{
glScalef(objects[n].sX, objects[n].sY, objects[n].sZ);
}
for (u_int32_t p=0; p < objects[n].faces.size(); p++)
{
//CTextureManager::GetInstance()->BindTexture(objects[n].tris[p].textureIndex);
glBegin(GL_TRIANGLES);
glNormal3f(objects[n].faces[p].points[0].normal.x,
objects[n].faces[p].points[0].normal.y,
objects[n].faces[p].points[0].normal.z);
glTexCoord2f(objects[n].faces[p].points[0].u,
objects[n].faces[p].points[0].v);
glVertex3f(objects[n].faces[p].points[0].x,
objects[n].faces[p].points[0].y,
objects[n].faces[p].points[0].z);
glNormal3f(objects[n].faces[p].points[0].normal.x,
objects[n].faces[p].points[0].normal.y,
objects[n].faces[p].points[0].normal.z);
glTexCoord2f(objects[n].faces[p].points[1].u,
objects[n].faces[p].points[1].v);
glVertex3f(objects[n].faces[p].points[1].x,
objects[n].faces[p].points[1].y,
objects[n].faces[p].points[1].z);
glNormal3f(objects[n].faces[p].points[0].normal.x,
objects[n].faces[p].points[0].normal.y,
objects[n].faces[p].points[0].normal.z);
glTexCoord2f(objects[n].faces[p].points[2].u,
objects[n].faces[p].points[2].v);
glVertex3f(objects[n].faces[p].points[2].x,
objects[n].faces[p].points[2].y,
objects[n].faces[p].points[2].z);
glEnd();
}
glPopMatrix();
}
}
Väldigt rena OpenGL kommandon tycker jag. Det som kanske gör skillnad är att alla arrayer här är vector klasser från STL. Kan det vara där prestandaförlusten kommer ifrån?