Pages : 1
#1 Le 26/10/2006, à 18:27
- yaitanes
SDL et CPU
Bonjour a tous !
J'aimerai faire un rpg en C + SDL et pour l'instant, j'ai juste mon bonhomme qui se ballade sur une map toute verte (j'ai commencé aujourd'hui )
J'ai fait 12*12 cases de 34 px, et lorsque qu'on produit un evenement, une boucle blitte les 144 cases d'une image d'herbe (+nouvelle position du joueur + mise jour de l'ecran).
Comme j'ai ajouté au tableau de bord le moniteur de frequence du cpu, je constate que :
-lorsque la frequence est de 600 MHz, le personnage va pas vite du tout
-apres lui avoir fait quelques cases, la frequence monte au maximum (1,60 GHz) et le personnage va plus vite...
Est-ce normal? Avez vous des astuces pour faire un truc plus propre?
PS : le blit dans la boucle du wait event :
for (i=0; i<NB_BLOCS_HAUTEUR; i++)
{
for (j=0; j<NB_BLOCS_LARGEUR; j++)
{
posDecor.x = j*TAILLE_BLOC;
posDecor.y = i*TAILLE_BLOC;
decor = IMG_Load("herbe.gif");
SDL_BlitSurface(decor, NULL, ecran, &posDecor);
}
}
SDL_BlitSurface(persoActuel, NULL, ecran, &posPerso);
SDL_Flip(ecran);
Hors ligne
#2 Le 28/10/2006, à 14:03
- guyver2
Re : SDL et CPU
essaye de ne mettre a jour que les case concernées par le mouvement du personage.
tu 'blit' la case ou il était avec un carré d'herbe et celle ou il est maintenant avec le perso.
-> 2 blit contre 144, le gain est pas négligeable.
ensuite tu flip l'écran comme tu fais deja.
et essaye de charger une fois pour toute ton sprite d'herbe et de perso. Dans une fonction d'initialisation ou autre. la tu accede 144 fois a ton fichier par affichage, or les acces aux fichiers sont ce qu'il y a de plus gourmand en temps cpu
Dernière modification par guyver2 (Le 28/10/2006, à 14:05)
Croire est le meilleur moyen de ne jamais rien savoir
Mes jeux en C/C++
Hors ligne
Pages : 1