Logo creanet 2.0
Notre première fenêtre avec la SDL

Dans ce chapitre, nous allons apprendre à créer une simple fenêtre avec la SDL.Smiley souris
Nous verrons ensuite dans le chapitre suivant comment la personnaliser.

Pour le moment, prenez votre projet codeblocks créé au chapitre précédent et effacez tout le code sourceSmiley souris

Enfin, supprimer le fichier cb.bmp placé dans le dossier others comme ceci:
 
suppression projet sdl de base

Vous êtes maintenant prêt à coder comme jamais!Smiley rigole
On va mainteant tout écrire au fur et a mesureSmiley souris

En premier lieu, il y a les includes. Ecrivez donc ceci:

#ifdef __cplusplus
    #include <cstdlib>
#else
    #include <stdlib.h>
#endif
#ifdef __APPLE__
#include <SDL/SDL.h>
#else
#include <SDL.h>
#endif

Vous remarquez qu'il s'agit de conditions présentes dans les includes. Elles permettent d'utiliser les bons fichiers lors de la compilation.Smiley souris

Vient ensuite le main:
 
int main(int argc, char** argv)

Pour utiliser correctement la SDL, vous êtes obligé d'écrire la forme complète du main comme indiqué ci-dessus. Oubliez donc le simple:

int main()


Ensuite, la SDL étant une libraire, elle doit, comme la plupart d'entre elles, s'initialiser et quitter proprement le programme. Pour cela, il suffit d'utiliser cette ligne pour initialiser la librairie:
 
SDL_Init(SDL_INIT_VIDEO);
 
 
Ici, on demande un flag comme paramètre. Un flag est tout simplement un define
déjà défini
Smiley souris


On utilise SDL_INIT_VIDEO mais il existe
aussi:

SDL_INIT_AUDIO
SDL_INIT_CDROM
SDL_INIT_TIMER
SDL_INIT_JOYSTICK
SDL_INIT_NOPARACHUTE

Mais nous n'utiliserons que SDL_INIT_VIDEOSmiley souris

Vous avez initialisé la SDL, mais il ne faut pas oublier, à la fin de votre programme, de la quitter. Pour cela, un appel à la fonction:
SDL_Quit();
suffit.


Création de la fenêtre

La fonction:
SDL_SetVideoMode(largeur, hauteur, bpp, flags);

Permet de créer une fenêtre. Voyons ses paramètres:

largeur:  Largeur de la fenêtre en pixels.
hauteur: Hauteur de la fenêtre en pixels.
bpp: Bits Par Pixels. Il s'agit de la "qualité" d'un pixel. Laissez toujours ce paramètre à 32.
flags: Il s'agit d'autres sortes de flags, qui permettent d'avoir par exemple une fenêtre sans bordure, d'activer le double buffering (vois juste après), etc..

Par défaut, mettez simplement le flag :
 
SDL_HWSURFACE


Cette fonction retourne un pointeur de type SDL_Surface. Nous verrons dans le chapitre consacré aux surfaces à quoi sert, plus en détails, ce type de pointeur mais tenons-nous en pour l'instant à la base.

Il vous suffit donc de créer un pointeur de type SDL_Surface comme ceci:
 
SDL_Surface *ecran = NULL; //C'est un pointeur, on oublie donc pas de l'initialiser à NULL.


Ce qui donne, pour la création d'une fenêtre, ce code-ci:


#ifdef __cplusplus
    #include <cstdlib>
#else
    #include <stdlib.h>
#endif
#ifdef __APPLE__
#include <SDL/SDL.h>
#else
#include <SDL.h>
#endif


int main ( int argc, char** argv )
{

SDL_Surface *ecran = NULL;
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);

    SDL_Quit();
    return 0;
}


Compilez et lancez ce programme et admirez la belle fenêtre......qui disparait --"
 
Et oui, tout ce travail pour rien? Non ne vous inquiétez pas, c'est tout à fait normalSmiley souris

Si vous regardez attentivement le code, vous vous apercevrez que l'on fait ceci:

-On initialise la SDL.
-On créer une fenêtre.
-On quitte la SDL.



Donc il est normal que, une fois créée, la fenêtre disparaisse puisque l'on quitte le programme.Smiley souris

Pour remédier à cela, il faut créer une boucle infinie une fois la fenêtre ouverte.
Mais une boucle infinie un peu spéciale comme nous allons le voir dans le chapitre suivant Smiley souris







Introduction à la SDL, installation, et création d'un projet               Les évenements avec la SDL














 
 
 



Créer un site
Créer un site