|
Dernière modification : 2007-10-15 à 16:28 par Sylvain Glaize. Dans Programmation. Une base d’application en C utilisant la bibliothèque SDL. Attention : cet article date maintenant un peu. Première application graphique en C avec la SDLIntroductionLa librairie SDL (Simple DirectMedia Layer, http://www.libsdl.org) est un moyen pratique d’accéder aux ressources multimédia d’un ordinateur tout en restant portable. La SDL permet des accès au système graphique, au son, permet de gêrer les évènements et d’autres choses encore. Dans ce tutorial, nous allons créer une première application graphique en C utilisant la SDL. Ce tutorial nécessite un minimum de connaissances en C (syntaxe générale, transtypage, structures et unions, pointeurs). Le programmePour cette première approche de la SDL, nous allons afficher une fenêtre à l’écran. Dans cette fenêtre, nous afficherons un serpentin de points suivant les déplacements de la souris. Nous verrons ainsi comment initialiser le système graphique de la SDL et comment gêrer les évènements souris. L’architecture du programme est très simple : une boucle principale attend les évènements et les interprête lorsqu’ils arrivent. à chaque tour de boucle, la fonction d’affichage est appelée. La fonction d’affichage se charge d’effacer l’écran et d’afficher les vingt dernières positions prises par la souris. Initialisation
Au début du programme, on trouve les
#define MAX_MOUSE_POS 20 Uint16 mouse_x[MAX_MOUSE_POS]; Uint16 mouse_y[MAX_MOUSE_POS]; Uint16 mouse_pos = 0;
Afin de retenir les vingt dernière positions de la souris, deux buffers sont déclarés (un pour x, l’autre pour y). Un index sur la position à enregistrer dans le buffer est initialisé à zéro.
Passons directement à l’initialisation de la SDL dans la fonction
Avant toute chose, SDL doit être initialisée avec les composants dont nous aurons besoin. Dans ce programme, nous avons besoin de la partie vidéo :
Le
Nous n’entrons pas dans les subtilités des résolutions d’écran. Il est en effet possible d’interroger le matériel afin de savoir quels modes sont disponibles. Dans notre exemple, nous demandons directement le mode que nous voulons : 640x480 en 16 bits. SDL fera au mieux et renverra un pointeur sur la surface représentant l’écran (
La fonction En mode double buffer, le dessin se fait sur un buffer caché. Lorsque l’affichage est terminé, on échange le buffer affiché et le buffer caché. Ainsi, ce qu’on a affiché s’affiche d’un coup et on écrit dans l’ancien buffer affiché. Et ainsi de suite. L’intérêt principal est de ne pas voir l’affichage se réaliser directement, c’est peu esthétique.
La boucle principale
C’est
Ces évènements du système sont mis dans une file d’attente et le programme doit aller lire cette file afin d’y répondre de façon adéquate. Un évènement est de type
Si c’est un type
Si c’est un type La fonction d’affichageLa fonction d’affichage commence par effacer l’écran. Pour cela, on demande l’affichage d’un rectangle plein de couleur noire prenant tout l’espace d’affichage.
Afin d’obtenir la couleur noire, nous utilisons la fonction Ainsi, pas besoin de se tracasser à savoir dans quel mode d’affichage on est, SDL s’occupe de tout. Noir en RGB, c’est (0,0,0). Le premier argument préciser le format d’affichage de la surface écran que l’on a initialisée.
Nous demandons ensuite une nouvelle couleur : bleu, en RGB (0,0,255). Les plus perspicaces d’entre vous auront remarqué que nous pourrions calculer ces deux couleurs une fois pour toute au début du programme. C’est vrai, ça serait beaucoup plus efficace. Mais ici, on fait simple et direct. ça sera votre premier exercice de modification de ce programme.
La boucle examine toutes les positions de la souris enregistrées dans le buffer et affichage une petit rectangle à cet endroit. Afin de décrire le rectangle à afficher, nous devons remplir une structure de type Dans notre cas, on positionne les coordonnées en fonction des coordonnées enregistrées de la souris, et notre carré fait cinq pixels de côté.
Enfin, maintenant que tout l’affichage est fait, on demande la permutation des deux buffers grâce à ConclusionVoilà un premier programme, très simple, qui décrit brièvement comment accéder à l’affichage grâce à la SDL. Ce programme a été compilé avec succès avec DevC++ sous Windows et avec gcc sous Linux. Je vous invite fortement de prendre le source de ce programme et de vous amuser avec, d’y ajouter des choses, de changer les couleurs, la forme des rectangles affichés, de changer le nombre de coordonnées enregistrées, de faire cycler les couleurs et pourquoi pas tout à la fois. CréditsTutorial écrit par Mokona écrit pour http://www.prografix.games-creators.org). |
||
Première application graphique en C avec la SDL
Les commentaires sont fermés pour cet article.
