( écrit mieux la prochaine fois ce sera plus lisible, même si tu as peu de temps, une simple relecture suffit et donne envie de répondre)
Pas à pas ( à la debug mode
)
SDL_Surface* f = SDL_LoadBMP(fichier);
Ouvre l´image bitmap contenue dans le fichier dont le nom est contenu dans la variable " fichier" ( exemple : si char fichier[] = " monimage.bmp", SDL_LoadBMP charge " monimage.bmp" en mémoire) puis SDL_LoadBMP retourne un pointeur vers la surface correspondant à l´image que tu viens de charger en mémoire qui est affecté à f.
SDL_Surface* surface=SDL_CreateRGBSurface(SDL_HWSURFACE, 1024, 768, 32, 0, 0, 0, 0);
Dans la SDL, tout est surface : une texture ( exemple celle chargée avant) comme ton écran.
Cette instruction créee donc une surface de 1024*768 ( résolution de l´écran) avec une profondeur de couleur de 32 bits, et utilise ton hardware pour la manipuler ( carte graphique, etc...) contrairement à SDL_SWSURFACE qui n´utiliserait pas les dites accélérations matérielles ( il me semble, dans le détail technique je sais pas trop, je me sert pas de la sdl
)
SDL_Rect R=Rect(0,0,f->w,f->h);
Crée une vrariable R de type SDL_Rect ( un rectangle avec une position ( 0,0), une largeur ( la variable width) et une hauteur ( la variable heigth).
En fait ce bout de code va servir à définir la taille de l´image que tu as chargé ainsi que la position ou tu veux la blitter, cf. code ci-après.
SDL_BlitSurface(f,NULL,firstscreen,&);
Blitte ( copie) la surface f à l´endroit précisé par ta structure R ( donc ( 0,0) avec les largeurs d´image spécifiées précédement sur la surface de l´écran firstscreen.
SDL_FreeSurface(f);
Désalloue la surface f.
return surface;
Retourne le pointeur vers la surface surface.
Autrement dit en effet, j´ai pas pigé le code non plus, surtout que le nom de la fonction n´est pas trop en rapport avec ce quelle effectue réellement. Je l´aurais plutôt appellé " AllocSurfaceAndBlitImageOnScreen" 