1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
| #include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL_ttf.h>
#include <SDL/SDL.h>
#include <SDL/SDL_framerate.h>
int main(int argc, char *argv[])
{
SDL_Surface *ecran, *fpsImage, *tmp;
SDL_Rect pos = {20,20};
TTF_Font *police = NULL;
SDL_Color ColBleu = {255,255,255};
int continu, fps = 0, tpsPre, tpsActu;
char fpsString[32] = "";
SDL_Event event;
FPSmanager manager;
if(SDL_Init(SDL_INIT_VIDEO) < 0) {
fprintf(stderr,"Erreur avec SDL_Init\n");
return EXIT_FAILURE;
}
ecran = SDL_SetVideoMode(800,600,32,SDL_HWSURFACE|SDL_DOUBLEBUF);
if(ecran == NULL) {
fprintf(stderr,"Erreur avec SDL_SetVideoMode\n");
return EXIT_FAILURE;
}
if(TTF_Init() < 0) {
fprintf(stderr,"Erreur avec TTF_Init\n");
return EXIT_FAILURE;
}
/* Gestion pour le nombre d'images par secondes */
SDL_initFramerate(&manager);
SDL_setFramerate(&manager, FPS_UPPER_LIMIT);
police = TTF_OpenFont("Fabulous.ttf",20);
if(police == NULL) {
fprintf(stderr,"Erreur avec ttf_openfont\n");
return EXIT_FAILURE;
}
tpsPre = SDL_GetTicks();
tmp = TTF_RenderText_Solid(police,"0",ColBleu);
if(tmp == NULL) {
fprintf(stderr,"Erreur avec TTF_RenderText_Solid\n");
return EXIT_FAILURE;
}
/* On transforme l'image */
fpsImage = SDL_DisplayFormat(tmp);
SDL_FreeSurface(tmp);
if(fpsImage == NULL) {
fprintf(stderr,"Erreur avec SDL_DisplayFormat\n");
return EXIT_FAILURE;
}
continu = 1;
while(continu)
{
while(SDL_PollEvent(&event)) {
switch(event.type)
{
case SDL_QUIT:
continu = 0;
break;
default:
break;
}
}
fps++;
SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
SDL_BlitSurface(fpsImage,NULL,ecran,&pos);
tpsActu = SDL_GetTicks();
if(tpsActu-tpsPre >= 1000)
{
sprintf(fpsString,"%d",fps);
SDL_FreeSurface(fpsImage);
tmp = TTF_RenderText_Solid(police,fpsString,ColBleu);
if(tmp == NULL) {
fprintf(stderr,"Erreur avec TTF_RenderText_Solid\n");
return EXIT_FAILURE;
}
/* On transforme l'image */
fpsImage = SDL_DisplayFormat(tmp);
SDL_FreeSurface(tmp);
if(fpsImage == NULL) {
fprintf(stderr,"Erreur avec SDL_DisplayFormat\n");
return EXIT_FAILURE;
}
fps = 0;
tpsPre = SDL_GetTicks();
}
SDL_Flip(ecran);
SDL_framerateDelay(&manager);
}
SDL_FreeSurface(fpsImage);
TTF_CloseFont(police);
TTF_Quit();
SDL_Quit();
return 0;
} |
Partager