32

Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Embed Size (px)

Citation preview

Page 1: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations
Page 2: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations
Page 3: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Une approche par « surface »Une approche par « surface »

L’écran ainsi que les images chargées L’écran ainsi que les images chargées sont considérées comme des surfaces.sont considérées comme des surfaces.

‘‘SDL_Surface’: type contenant toutes les SDL_Surface’: type contenant toutes les informations sur une surfaceinformations sur une surface

Page 4: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Une approche par « surface »Une approche par « surface »

Initialisation d’une surface:Initialisation d’une surface:

SDL_SetVideoMode(largeur,hauteur,BitsParPixel,type)SDL_SetVideoMode(largeur,hauteur,BitsParPixel,type)

BitsParPixelBitsParPixel permet de spécifier la précision des couleurs permet de spécifier la précision des couleurs (16->65536 couleurs)(16->65536 couleurs)

TypeType peut prendre les valeurs :peut prendre les valeurs :SDL_HWSURFACESDL_HWSURFACE : Surface stockée dans la mémoire de la carte vidéo : Surface stockée dans la mémoire de la carte vidéo

->contraire : SDL_ SWSURFACE->contraire : SDL_ SWSURFACESDL_DOUBLEBUF SDL_DOUBLEBUF : Active le double buffering (évite les scintillements): Active le double buffering (évite les scintillements)SDL_FULLSCREENSDL_FULLSCREEN : Fenêtre en plein écran : Fenêtre en plein écranSDL_OPENGLSDL_OPENGL : Permet de faire un lien avec OpenGL : Permet de faire un lien avec OpenGLSDL_RESIZABLESDL_RESIZABLE : Un évènement SDL_VIDEORESIZE : Un évènement SDL_VIDEORESIZE est envoyé si la tailleest envoyé si la taille

changechange

Page 5: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Une approche par « surface »Une approche par « surface »

Initialisation d’une surface:Initialisation d’une surface:

SDL_CreateRGBSurface SDL_CreateRGBSurface (type,largeur,hauteur,BitsParPixel,R,V,B,A)(type,largeur,hauteur,BitsParPixel,R,V,B,A)

TypeType peut ici prendre les valeurs :peut ici prendre les valeurs :SDL_HWSURFACESDL_HWSURFACE : Surface stockée dans la mémoire de la carte vidéo : Surface stockée dans la mémoire de la carte vidéo

->contraire : SDL_ SWSURFACE->contraire : SDL_ SWSURFACESDL_SRCCOLORKEYSDL_SRCCOLORKEY : permet de rendre une couleur transparente : permet de rendre une couleur transparenteSDL_SRCALPHASDL_SRCALPHA : permet d’utiliser le canal alpha (permet des effets de transparence) : permet d’utiliser le canal alpha (permet des effets de transparence)

RVBARVBA est le masque de couleur du fond (alpha étant la est le masque de couleur du fond (alpha étant la transparence : 0 opaque, FF invisible)transparence : 0 opaque, FF invisible)

Page 6: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Une approche par « surface »Une approche par « surface »

Initialisation d’une surface à partir d’une image :Initialisation d’une surface à partir d’une image :

SDL_LoadBMP(chemin)SDL_LoadBMP(chemin)

cheminchemin est une chaîne de caractères indiquant le fichier à charger. est une chaîne de caractères indiquant le fichier à charger.Il est cependant plus simple d’utiliser une librairie annexe :Il est cependant plus simple d’utiliser une librairie annexe :  SDL_Image SDL_Image

Cette librairie permet de charger des fichiers Cette librairie permet de charger des fichiers BMP, PNM, XPM, LBM, PCX, GIF, JPEG, PNG et TGA BMP, PNM, XPM, LBM, PCX, GIF, JPEG, PNG et TGA grâce à la fonction :grâce à la fonction :

IMG_Load(chemin)IMG_Load(chemin)cheminchemin est une chaîne de caractères indiquant le fichier à charger. est une chaîne de caractères indiquant le fichier à charger.SDL_Image se charge de trouver le type du fichierSDL_Image se charge de trouver le type du fichier

Page 7: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Manipulation des surfacesManipulation des surfaces

Copie entre deux surfaces :Copie entre deux surfaces :

SDL_BlitSurface(Surf1,rect1,Surf2,rect2)SDL_BlitSurface(Surf1,rect1,Surf2,rect2)

Surf1Surf1 est la surface d’origine. est la surface d’origine.Rect1Rect1 est le rectangle de sélection, de type SDL_Rect&: est le rectangle de sélection, de type SDL_Rect&:

x et y représentent les coordonnées en haut à gauche du rectanglex et y représentent les coordonnées en haut à gauche du rectangle h et w représentent la hauteur et la largeur du rectangle à sélectionnerh et w représentent la hauteur et la largeur du rectangle à sélectionner

Surf2Surf2 est la surface de destination. est la surface de destination. Rect2Rect2 est le rectangle de destination. Seul x et y sont pris en est le rectangle de destination. Seul x et y sont pris en

compte : la largeur sera celle spécifié avec compte : la largeur sera celle spécifié avec Rect1Rect1..Si Si Rect1Rect1 est à est à NULL NULL, toute l’image est copiée, toute l’image est copiéeSi Si Rect2Rect2 est à est à NULL NULL, l’image copiée se place en haut à gauche, l’image copiée se place en haut à gauche

Page 8: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Gestion des entrées sortiesGestion des entrées sorties

Récupérer les évènements claviersRécupérer les évènements claviers

SDL_PollEvent(&evenement)SDL_PollEvent(&evenement)

EvenementEvenement est de type est de type SDL_EventSDL_Event..SDL_Event est une structure rassemblant les évènements :SDL_Event est une structure rassemblant les évènements :

1.1. Clavier :Clavier :SDL_GetKeyStateSDL_GetKeyState permet de récupérer un tableau de 256 cases booléennepermet de récupérer un tableau de 256 cases booléenneC’est une photo du clavier : si une touche est pressée, la case C’est une photo du clavier : si une touche est pressée, la case

correspondante est à vrai constantes :correspondante est à vrai constantes :SDLK_ESCAPE, SDLK_F1, SDLK_w …SDLK_ESCAPE, SDLK_F1, SDLK_w …Il est par ailleurs possible d’utiliser UNICODE grâce à :Il est par ailleurs possible d’utiliser UNICODE grâce à :

SDL_EnableUNICODE(int enable); SDL_EnableUNICODE(int enable);

Page 9: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Gestion des entrées sortiesGestion des entrées sorties

Récupérer les évènements claviersRécupérer les évènements claviers

SDL_PollEvent(&evenement)SDL_PollEvent(&evenement)

EvenementEvenement est de type est de type SDL_Event.SDL_Event.SDL_Event est une structure rassemblant les évènements :SDL_Event est une structure rassemblant les évènements :

1.1. Clavier.Clavier.2.2. Souris :Souris :

SDL_GetMouseState(x,y)SDL_GetMouseState(x,y) permet d’avoir la position de la sourispermet d’avoir la position de la sourisSDL_BUTTON(x) SDL_BUTTON(x) permet de savoir si le bouton x est appuyé.permet de savoir si le bouton x est appuyé.

3.3. Joystick :Joystick :SDL_JoystickOpen(0) SDL_JoystickOpen(0) permet d’initialiser le joystick 0.permet d’initialiser le joystick 0.SDL_JoystickClose(0) SDL_JoystickClose(0) libère le joystick 0.libère le joystick 0.

Page 10: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Gestion du sonGestion du son

SDL permet de gérer le son, mais de manière SDL permet de gérer le son, mais de manière peu évolué.peu évolué.

Après quelques recherches sur Internet, la Après quelques recherches sur Internet, la librairie librairie FMODFMOD m’est apparu comme très m’est apparu comme très performante.performante.

Elle permet d’utiliser des effets DirectX, du son Elle permet d’utiliser des effets DirectX, du son 3D, d’enregistrer en FULL-DUPLEX…3D, d’enregistrer en FULL-DUPLEX…

De plus, elle permet de lire des fichiers de type :De plus, elle permet de lire des fichiers de type :Midi, wav, mp3, ogg, raw, cd …Midi, wav, mp3, ogg, raw, cd …

Page 11: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Gestion du son : FMODGestion du son : FMOD

Initialisation de FMOD :Initialisation de FMOD :

FSOUND_Init(freq,nbcanaux,flags)FSOUND_Init(freq,nbcanaux,flags)

FreqFreq représente la fréquence d’échantillonnage (44100 représente la fréquence d’échantillonnage (44100 par ex)par ex)

NbcanauxNbcanaux représente le nombres de canaux (ie le nombre représente le nombres de canaux (ie le nombre de sons Max pouvant être joué simultanément)de sons Max pouvant être joué simultanément)

FlagsFlags représente les différents paramètres représente les différents paramètres d’initialisation…d’initialisation…

Page 12: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Gestion du son : FMODGestion du son : FMOD

Chargement d’une musique :Chargement d’une musique :

FSOUND_Stream_Open(FSOUND_Stream_Open(chemin,flags,début,longueur)chemin,flags,début,longueur)

cheminchemin est une chaîne de caractères indiquant le est une chaîne de caractères indiquant le fichier à charger. fichier à charger.

flagsflags a en général pour valeur a en général pour valeur FSOUND_LOOPFSOUND_LOOPdébutdébut est facultatif, indique l’offset de debut du fichier est facultatif, indique l’offset de debut du fichierlongueurlongueur est facultatif, indique la longueur du fichier est facultatif, indique la longueur du fichier

Page 13: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Gestion du son : FMODGestion du son : FMOD

Chargement d’un son :Chargement d’un son :

FSOUND_Sample_Load(index,FSOUND_Sample_Load(index,chemin,flags,début,longueur)chemin,flags,début,longueur)

Index Index défini le canal a utiliser défini le canal a utiliser

((FSOUND_FREEFSOUND_FREE permet de laisser FMOD s’en charger). permet de laisser FMOD s’en charger).

cheminchemin est une chaîne de caractères indiquant le fichier à est une chaîne de caractères indiquant le fichier à charger. charger.

flagsflags a en général pour valeur a en général pour valeur FSOUND_NORMALFSOUND_NORMAL

débutdébut est facultatif, indique l’offset de début du fichier est facultatif, indique l’offset de début du fichier

longueurlongueur est facultatif, indique la longueur du fichier est facultatif, indique la longueur du fichier

Page 14: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Gestion du son : FMODGestion du son : FMOD

Jouer un son :Jouer un son :

FSOUND_PlaySound(index,identifiant) FSOUND_PlaySound(index,identifiant)

Index Index défini le canal a utiliser défini le canal a utiliser

((FSOUND_FREEFSOUND_FREE permet de laisser FMOD s’en charger). permet de laisser FMOD s’en charger).

IdentifiantIdentifiant est l’id du son précédemment chargé avec est l’id du son précédemment chargé avec FSOUND_Sample_LoadFSOUND_Sample_Load

Page 15: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations
Page 16: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations
Page 17: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Initialisation de tous les composants.Initialisation de tous les composants.SDL :SDL :SDL_Init( SDL_INIT_VIDEO|SDL_INIT_TIMER )SDL_Init( SDL_INIT_VIDEO|SDL_INIT_TIMER )Pour démarrer SDL. Le timer permettra de régler la vitesse Pour démarrer SDL. Le timer permettra de régler la vitesse

d’affichage, comme nous verrons par la suite.d’affichage, comme nous verrons par la suite.atexit(SDL_Quit)atexit(SDL_Quit)Permet de dire à SDL de quitter proprement.Permet de dire à SDL de quitter proprement.SDL_EnableUNICODE(1)SDL_EnableUNICODE(1) parle de lui même. parle de lui même.SDL_ShowCursor(false)SDL_ShowCursor(false) rend la souris invisible. rend la souris invisible.SDL_SetVideoMode(800,600,32, SDL_SetVideoMode(800,600,32,

SDL_HWSURFACE| SDL_DOUBLEBUF|SDL_FULLSCREEN)SDL_HWSURFACE| SDL_DOUBLEBUF|SDL_FULLSCREEN)Crée une fenêtre plein écran de 800*600*32, en mémoire vidéo, double Crée une fenêtre plein écran de 800*600*32, en mémoire vidéo, double

buffer.buffer.

Page 18: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Initialisation de tous les composants.Initialisation de tous les composants.

FMOD :FMOD :FSOUND_Init(44100,4,0)FSOUND_Init(44100,4,0)

Pour initialiser la fréquence d’échantillonnage à 44100 Pour initialiser la fréquence d’échantillonnage à 44100 échantillons/sec, avec 4 canaux indépendants et sans gestion échantillons/sec, avec 4 canaux indépendants et sans gestion particulière (3D, directX…)particulière (3D, directX…)

Page 19: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Initialisation de tous les composants.Initialisation de tous les composants.

Objets du jeu :Objets du jeu :

Par exemple Par exemple bombebombe (mais valable pour tous (mais valable pour tous les autres objets : les autres objets : mur, joueurs, feumur, joueurs, feu…)…)

Pour des raisons d’optimisation, il est Pour des raisons d’optimisation, il est préférable de charger les textures (ou préférable de charger les textures (ou image) une fois pour toute. Donc, les image) une fois pour toute. Donc, les textures sont des membres textures sont des membres staticstatic des des classes.classes.

Page 20: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Initialisation de tous les composants.Initialisation de tous les composants.BOMBE :BOMBE :Bombe::init()Bombe::init()Charge les animations de la bombe :Charge les animations de la bombe :

SDL_SetColorKey(bombe[0],SDL_SRCCOLORKEY|SDL_RLEACCEL,noir)SDL_SetColorKey(bombe[0],SDL_SRCCOLORKEY|SDL_RLEACCEL,noir)Permet de spécifier une couleur transparente.Permet de spécifier une couleur transparente.SDL_RLEACCELSDL_RLEACCEL permet d’accélérer le rendu des image transparentes permet d’accélérer le rendu des image transparentesnoirnoir est obtenu grâce a la fonction est obtenu grâce a la fonction SDL_MapRGB(attend[0]->format,0,0,0) SDL_MapRGB(attend[0]->format,0,0,0) qui qui

renvoie la couleur associé aux trois derniers paramètres.renvoie la couleur associé aux trois derniers paramètres.

Page 21: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Initialisation de tous les composants.Initialisation de tous les composants.

Le plateau :Le plateau :

Il est composé d’un tableau à 2 dimensions :Il est composé d’un tableau à 2 dimensions :

Ce sont des pointeurs sur des objets :Ce sont des pointeurs sur des objets :

VideVide VideVide VideVide

FeuFeu MurMur VideVide

1,1 1,2 1,3

2,1 2,2 2,3

Page 22: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Initialisation de tous les composants.Initialisation de tous les composants.

Le plateau :Le plateau :

Par ailleurs, un autre tableau recense toutes Par ailleurs, un autre tableau recense toutes les modifications du plateau (une bombe les modifications du plateau (une bombe de posée, un mur qui explose…)de posée, un mur qui explose…)

A départ, toutes les cases sont misent à 1 A départ, toutes les cases sont misent à 1 (modification), pour que tout le plateau soit (modification), pour que tout le plateau soit affiché.affiché.

Page 23: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Boucle d’affichageBoucle d’affichage

1.1. On efface les joueurs.On efface les joueurs.

En effet, lorsqu’un joueur se déplace, il faut En effet, lorsqu’un joueur se déplace, il faut l’effacer en réaffichant le décor qui se l’effacer en réaffichant le décor qui se trouve sous le joueur .Sinon, une traînée trouve sous le joueur .Sinon, une traînée apparaît: apparaît:

Page 24: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Boucle d’affichageBoucle d’affichage2.2. On affiche les explosions :On affiche les explosions :

1.1. On parcours le tableau des modifications, et si On parcours le tableau des modifications, et si une cases est à 2 alors c’est qu’elle explose.une cases est à 2 alors c’est qu’elle explose.

2.2. On interroge l’objet pour savoir où et comment On interroge l’objet pour savoir où et comment les flammes partent.les flammes partent.

3.3. Teste les collisions avec les objets du plateau Teste les collisions avec les objets du plateau et ainsi détermine quels objets sont détruits et ainsi détermine quels objets sont détruits par l’explosion.par l’explosion.

4.4. Affiche les flammes de l’explosion.Affiche les flammes de l’explosion.

Page 25: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Boucle d’affichageBoucle d’affichage

3.3. On affiche les objets du plateau qui ont On affiche les objets du plateau qui ont étésétés

modifiés :modifiés :1.1. Parcours le tableau de modifsParcours le tableau de modifs

• L’objet n’a pas été modifié, on ne l’affiche pas.L’objet n’a pas été modifié, on ne l’affiche pas.• L’objet explose, on affiche son explosion.L’objet explose, on affiche son explosion.• L’objet doit être réactualisé, on l’affiche.L’objet doit être réactualisé, on l’affiche.

2.2. Gestion de la pseudo-3D :Gestion de la pseudo-3D :

Page 26: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Boucle d’affichageBoucle d’affichage4.4. On affiche les joueurs :On affiche les joueurs :

Le joueur est contrôlé pour un humain :Le joueur est contrôlé pour un humain : Calcul de la direction demandéCalcul de la direction demandé

Collision :Collision :Modification de la direction en calculant le point de contact sur Modification de la direction en calculant le point de contact sur

le carré de collision de l’objet et et en modifiant en le carré de collision de l’objet et et en modifiant en conséquence le vecteur déplacement. conséquence le vecteur déplacement.

affichage du joueur :affichage du joueur :Calcul de l’image à afficher en fonction de la direction du Calcul de l’image à afficher en fonction de la direction du

vecteur déplacement ainsi que de son module (et de vecteur déplacement ainsi que de son module (et de l’image précédente) :l’image précédente) :

Page 27: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Boucle d’affichageBoucle d’affichage4.4. On affiche les joueurs :On affiche les joueurs :

Le joueur est contrôlé par l’ordinateur :Le joueur est contrôlé par l’ordinateur : Calcul du but (par ordre de priorités)Calcul du but (par ordre de priorités)

Y a t’il un danger?Y a t’il un danger? Y a t’il un joueur relativement proche?Y a t’il un joueur relativement proche? Y a t’il un bonus relativement proche?Y a t’il un bonus relativement proche?

Calcul du chemin (par ordre de calcul)Calcul du chemin (par ordre de calcul) Il y a un dangerIl y a un danger

Calcul du chemin le plus cour vers une case sure, sans se Calcul du chemin le plus cour vers une case sure, sans se soucier de passer par des cases ‘dangereuses’soucier de passer par des cases ‘dangereuses’Ne fait pas les autres calculs!Ne fait pas les autres calculs!

Recherche le chemin le mois dangereux (sans passer a coté des Recherche le chemin le mois dangereux (sans passer a coté des bombes)bombes)

Recherche du plus cour chemin. Recherche du plus cour chemin. Puis même schéma que précédemment :Puis même schéma que précédemment :

Calcul des collisions et gestion de la pseudo 3DCalcul des collisions et gestion de la pseudo 3D

Page 28: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

Boucle d’affichageBoucle d’affichage

5.5. Calcul de la vitesse d’exécutionCalcul de la vitesse d’exécutionSi le temps passé a réactualiser la scène est Si le temps passé a réactualiser la scène est supérieur à 30 ms, on attend le temps restant. supérieur à 30 ms, on attend le temps restant. Sinon, on redessine une nouvelle scène.Sinon, on redessine une nouvelle scène.

Rendu possible grâce à Rendu possible grâce à SDL_INIT_TIMER SDL_INIT_TIMER et à la et à la fonction fonction SDL_GetTicks() SDL_GetTicks() qui renvoie le nombre de qui renvoie le nombre de msms passées depuis le lancement de SDL. passées depuis le lancement de SDL.

Page 29: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

La principale limite : l’age.La principale limite : l’age.

En effet, cette bibliothèque développé il y a En effet, cette bibliothèque développé il y a fort longtemps est en réalité basé sur fort longtemps est en réalité basé sur

DirectX5 (pour Windows), ce qui implique DirectX5 (pour Windows), ce qui implique quelques limitations. En effet, de quelques limitations. En effet, de nombreuse fonction (comme la nombreuse fonction (comme la

transparence) sont gérées en software, transparence) sont gérées en software, sans tenir compte d’optimisations sans tenir compte d’optimisations

matérielles…matérielles…

Page 30: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

La seconde limite :La seconde limite :

Pas de manipulation avancé.Pas de manipulation avancé.

La bibliothèque n’inclus pas de primitives La bibliothèque n’inclus pas de primitives évolué, comme zoomer sur une partie évolué, comme zoomer sur une partie

d’image, ou faire faire une rotation à une d’image, ou faire faire une rotation à une image.image.

Page 31: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

La bibliothèque n’automatise pas l’utilisation La bibliothèque n’automatise pas l’utilisation de plusieurs surfaces sur une même de plusieurs surfaces sur une même

surface.surface.

C’est à dire que c’est au programmeur C’est à dire que c’est au programmeur d’enregistrer ce qui se trouve sous la d’enregistrer ce qui se trouve sous la

surface pour pouvoir effacer l’objet par la surface pour pouvoir effacer l’objet par la suite :suite : masque

Page 32: Une approche par « surface » Lécran ainsi que les images chargées sont considérées comme des surfaces. SDL_Surface: type contenant toutes les informations

De très bon tutoriaux se trouvent sur le site http://www.programmationworld.com/site/