Chute de fps de 40fps a 2fps [Résolu]

Signaler
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008
-
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008
-
Bonjour,
J' ai fais cette fonction:
void LoadWorld(char lvlfile[500]){
int j=0;
lvl=fopen(lvlfile, "rb");
fscanf(lvl, "object.numFaces=%i\n", &obj.numFaces);
for(j;j<obj.numFaces;j++)
{
fscanf(lvl, "face.material=%s\n", &face.material);
fscanf(lvl, "face.texture=%s\n", &buffer);
fscanf(lvl, "face.coords{%i|%i|%f|%f|%f}\n", &face.itCoordsX[0], &face.itCoordsY[0], &face.pX[0], &face.pY[0], &face.pZ[0]);
fscanf(lvl, "face.coords{%i|%i|%f|%f|%f}\n", &face.itCoordsX[1], &face.itCoordsY[1], &face.pX[1], &face.pY[1], &face.pZ[1]);
fscanf(lvl, "face.coords{%i|%i|%f|%f|%f}\n", &face.itCoordsX[2], &face.itCoordsY[2], &face.pX[2], &face.pY[2], &face.pZ[2]);
fscanf(lvl, "face.coords{%i|%i|%f|%f|%f}\n", &face.itCoordsX[3], &face.itCoordsY[3], &face.pX[3], &face.pY[3], &face.pZ[3]);
strcpy(face.iTexture, "Datas\\Bmp\");
strcat(face.iTexture, buffer);
LoadBind(face.iTexture, j);
glBegin ( GL_QUADS );
glTexCoord2d(face.itCoordsX[0], face.itCoordsY[0]); glVertex3f(face.pX[0], face.pY[0], face.pZ[0]);
glTexCoord2d(face.itCoordsX[1], face.itCoordsY[1]); glVertex3f(face.pX[1], face.pY[1], face.pZ[1]);
glTexCoord2d(face.itCoordsX[2], face.itCoordsY[2]); glVertex3f(face.pX[2], face.pY[2], face.pZ[2]);
glTexCoord2d(face.itCoordsX[3], face.itCoordsY[3]); glVertex3f(face.pX[3], face.pY[3], face.pZ[3]);
glEnd ( );
}
fclose(lvl);
}
Au debut tout ce passe bien, puis apres quelques secondes je passe de 40fps a 2fps sans savoir pourquoi j' ai essayer de modifier le code, mais rien n' y fait ...
Si quelqu'un pourrait me dire sa m' aiderais beaucoup.
Merci
DarkBoss

5 réponses

Messages postés
63
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
25 juillet 2005

J'y connais pas grand chose a tout ca, mais est ce que quand tu fais :



glTexCoord2d(face.itCoordsX[0], face.itCoordsY[0]); glVertex3f(face.pX[0], face.pY[0], face.pZ[0]);

glTexCoord2d(face.itCoordsX[1], face.itCoordsY[1]); glVertex3f(face.pX[1], face.pY[1], face.pZ[1]);

glTexCoord2d(face.itCoordsX[2], face.itCoordsY[2]); glVertex3f(face.pX[2], face.pY[2], face.pZ[2]);

glTexCoord2d(face.itCoordsX[3], face.itCoordsY[3]); glVertex3f(face.pX[3], face.pY[3], face.pZ[3]);




tu ne créerais pas des objets qui ne sont pas libérés ensuite?

Auquel cas plus ca tourne, et plus il a d'objet a afficher, et donc plus il rame
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

ah oué,
j'y avais pas pensé,
en fait il suffirais de faire faire un free(face...); c' est bien ça ?

DarkBoss
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

et comment liberer une structure entiere ?

DarkBoss
Messages postés
63
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
25 juillet 2005

je ne sais pas, j'y connais rien en gl. Mais deja tu peux verifier que
ce soit ca le probleme simplement en les mettant en commentaire.

Je viens de trouver ca, peut etre que c'est ce que tu devrais faire

avant chaque reaffichage




<li>glClear (GL_COLOR_BUFFER_BIT | </li><li> GL_DEPTH_BUFFER_BIT);

</li><li> glDisable(GL_TEXTURE_2D);

</li>

Bon courage
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

DarkBoss