SDL et FPS

Signaler
Messages postés
3
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
30 janvier 2006
-
Messages postés
3
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
30 janvier 2006
-
Bonjour,
Voici un petit code qui ne fait rien d'autre qu'afficher un ecran noir.
Le calcul des FPS donne 50 images par secondes. C'est lent pour un P4 et ATI 7500.
Qu'en pensez vous ? code pourri ? calcul fps foireux ?

///////////////// DEBUT DU CODE

#define LARG 1024
#define HAUT 768
#define DEPTH 16


#include <stdio.h>
#include <stdlib.h>
#include
#include <SDL/SDL.h>


void Quitter();
void Traitment_evenement();
void BouclePrincipale();

SDL_Surface *Screen;

float fps=0;
int hh=0;
int tt=0;
int temps1, temps2;

SDL_Event event;

int t0,t1,t2;
int quit=0;
int i=0;

int main()
{
atexit(Quitter);
if( SDL_Init( SDL_INIT_EVENTTHREAD|SDL_INIT_VIDEO|SDL_INIT_TIMER | SDL_INIT_AUDIO ) == -1 ) { fprintf(stderr, "Impossible d'initialiser SDL : %s\n", SDL_GetError()); exit (0); }
Screen = SDL_SetVideoMode (LARG, HAUT, DEPTH,SDL_HWSURFACE | SDL_HWACCEL | SDL_HWPALETTE|SDL_FULLSCREEN|SDL_DOUBLEBUF|SDL_RLEACCEL|SDL_SRCALPHA);
if (!Screen) { fprintf(stderr,"Impossible d'initialiser l'Ecran : %s\n ",SDL_GetError()); exit (0); }

BouclePrincipale();

}

void Quitter()
{
SDL_Quit();
}


void BouclePrincipale()
{
while( quit == 0)
{
Traitment_evenement();
SDL_Flip(Screen);
tt++;
temps2=SDL_GetTicks();
if(((temps2-temps1)/1000)>=1) { fps=tt; printf("%d\n",int(fps)); tt=0; temps1=SDL_GetTicks();}
}
}


void Traitment_evenement()
{
while( SDL_PollEvent( &event ) )
{
switch (event.type)
{

case SDL_MOUSEBUTTONDOWN:
quit=1;
break;
case SDL_QUIT:
exit(9);
break;
}
}

}

///////////////// FIN DU CODE

2 réponses

Messages postés
237
Date d'inscription
lundi 20 mai 2002
Statut
Membre
Dernière intervention
22 juillet 2011
2
Salut :)



Ton calcul de FPS a l'air correct...

Il est possible que la synchronisation verticale de ton moniteur soit
activée.... Tente de la désactiver pour voir combien de FPS tu obtiens
a ce moment-là, ca devrait être plus proche de la réalité...



Bonne journée @+
Messages postés
3
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
30 janvier 2006

Je te remercie.

J'ai trouvé l'explication de mon probleme : la DRI n'était pas activée.

Sottement je me disais, pas de 3d, bon même pas grave...

Recompilation du noyau et hop. Ca marche.

Mais tu me fais m'interroger : comment désactiver la synchro verticale ?En virant SDL_Flip pour SDL_Update_Rect ??