FAQ SDLConsultez toutes les FAQ

Nombre d'auteurs : 6, nombre de questions : 67, création le 10 mai 2013 

 
OuvrirSommaireGestion de ressources

Souvent, lorsqu'un programme devient assez mature, les développeurs veulent trouver une solution pour cacher les ressources ou réduire leur nombre.

Une solution souvent utilisée est d'inclure les ressources dans des fichiers ressources. Ceci est déconseillé vu que cela limite la portabilité du programme. Une solution plus adaptée serait de créer sa propre archive et de les charger directement en mémoire.

La bibliothèque SDL fournit des fonctions avec un suffixe RW qui prennent en paramètre un SDL_RWops. Par exemple, IMG_Load a son équivalent IMG_Load_RW.

Créé le 9 avril 2007  par fearyourself

Il existe quatre fonctions pour créer une structure SDL_RWops :

Les fonctions qui créent une structure SDL_RWops
Sélectionnez
SDL_RWops* SDL_RWFromFile(const char* file, const char *mode);
SDL_RWops* SDL_RWFromFP(FILE *fp, int autoclose);
SDL_RWops* SDL_RWFromMem(void* mem, int size);
SDL_RWops* SDL_RWFromConstMem(const void* mem, int size);

Chaque fonction retourne un pointeur vers une structure SDL_RWops et les fonctions qui les chargent prennent généralement un paramètre pour dire si à la fermeture ou la libération de la mémoire, la structure SDL_RWops devrait être libérée.

Par exemple, le prototype de la fonction SDL_LoadBMP_RW est :

Le prototype de la fonction SDL_LoadBMP_RW
Sélectionnez
SDL_Surface SDL_LoadBMP_RW(SDL_RWops *src, int freesrc);

Le deuxième paramètre permet donc de dire que lorsque la surface sera créée la zone mémoire pour la structure SDL_RWops sera libérée. Il ne faudra donc pas le faire après.

Créé le 9 avril 2007  par fearyourself

La bibliothèque SDL_ttf permet aussi d'utiliser une structure SDL_RWops. Pour cela il faut utiliser la fonction :

Prototype de TTF_OpenFontRW
Sélectionnez
SDL_Cursor * SDLCALL TTF_OpenFontRW(SDL_RWops *src, int freesrc, int ptsize);

Si le deuxième paramètre est non nul, alors cela veut dire que lors de la fermeture de la police, la bibliothèque SDL_ttf gérera la libération de mémoire. Par contre, si vous mettez une valeur nulle, alors vous devrez gérer la libération vous-même. Par contre, faites attention, il faudra libérer la structure lorsque la police créée n'est plus utilisée.

Créé le 9 avril 2007  par fearyourself
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006-2012 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.