Utiliser la SDL en langage C

Un zeste de graphique

Vous connaissez le langage C et vous souhaitez l’utiliser pour faire des petits programmes graphiques ? Vous êtes curieux et vous voulez découvrir la SDL ? Ou encore, vous venez de finir d’apprendre les bases du langage C et voulez les mettre en pratique en utilisant une bibliothèque graphique ? Vous êtes au bon endroit.

Dans ce tutoriel, nous verrons comment utiliser la SDL afin de faire des programmes graphiques.

Prérequis
Savoir programmer en langage C (un tutoriel est disponible ici).

Prérequis optionnel
Avoir des bases en représentation des nombres en machines.
Connaître les opérateurs bits à bits (un tutoriel est disponible ici).
Savoir utiliser les drapeaux.

Objectifs
Apprendre à utiliser une nouvelle bibliothèque.
Introduire à la documentation de la SDL.
Apprendre à faire des petits jeux.

La SDL

  1. Présentation de la SDL
  2. Configurer un projet avec la SDL
  3. Prérequis et état d'esprit du tutoriel

Les premières fenêtres

  1. Initialiser la SDL
  2. Créer des fenêtres
  3. Gérer la fenêtre

Dessiner dans la fenêtre

  1. Gestion du rendu
  2. Des rectangles et des couleurs
  3. Des dessins

Les textures et les images

  1. Les textures
  2. Les surfaces
  3. Les images

Modification pixels par pixels

  1. Les textures
  2. Les surfaces
  3. Lier surfaces et textures

La transparence

  1. La transparence alpha
  2. Gérer la transparence alpha
  3. Avec les surfaces

TP - Effets sur des images

  1. Noirs et négatifs
  2. De la luminosité
  3. Floutage

Les évènements 1

  1. Gérer les évènements
  2. Analyser les évènements
  3. Le statut des périphériques


Ce tutoriel n’est pas encore fini et d’autres chapitres risquent bien de voir le jour. L’apprentissage non plus n’est pas fini, il reste plein de choses à apprendre et l’univers de la SDL est très vaste.

Un grand merci à tous les membres qui ont apporté leur aide lors de la bêta, à Taurre qui a fait un travail monstrueux pour valider ce tutoriel et surtout merci aux lecteurs !

7 commentaires

MERCI !

Je sais utilisé la SDL2 en règle général (Afficher images, jouer sons, gérer les events etc …), mais le cours est super propre et me permet de retrouver l’essentiel super rapidement !

En plus le cours est vraiment plus approfondie, et n’est pas juste un "Vous faites ça et y’a une image qui s’affiche"; il y a une vrais démarche explicative derrière.

Chapeau-bas pour la gestion pixel par pixel et le TP - Effets sur des images, qui me permet d’appréhendé une partie plus compliqué de SDL mais tellement intéressante. Si je ne dis pas de bêtises SDL gère aussi le son sans SDL_mixer et permettrais pareil de faire des édit sur du son ou un échantillons ? Et en générer ? Cela serait chouette une partie la dessus.

Merci encore !

PS : Des erreurs dans les codes (Nom de variable erroné ou autres), je n’avais pas vue qu’il y avait un bouton signalement, je le ferais à ma prochaine lecture. Puis de toute façon ça oblige à réfléchir un peux plus ^^

+1 -0

MERCI !

Je sais utilisé la SDL2 en règle général (Afficher images, jouer sons, s’occuper des events etc …), mais le cours est super propre et me permet de retrouver l’essentiel super rapidement !

En plus le cours est vraiment plus approfondie, et n’est pas juste un "Vous faites ça et olol y’a une image qui s’affiche"; il y a une vrais démarche explicative derrière.

Merci à toi. Vu ce que tu dit, le tutoriel atteint son but. ^^

Chapeau-bas pour la gestion pixel par pixel et le TP - Effets sur des images, qui me permet d’appréhendé une partie plus compliqué de SDL mais tellement intéressante.

Ouep. Et il était super intéressant à écrire aussi.

Si je ne dis pas de bêtises SDL gère aussi le son sans SDL_mixer et permettrais pareil de faire des édit sur du son ou un échantillons ? Et en générer ? Cela serait chouette une partie la dessus.

C’est vrai que ce serait cool, mais c’est plus compliqué de générer un son que de générer une image. C’est sûr qu’il y aura un chapitre sur la gestion du son. Plus tard, il pourra peut-être y avoir un chapitre sur SDL_Audio et un chapitre-TP avec ce que tu proposes là. ;)

PS : Pas mal d’erreur dans les codes (Nom de variable erroné ou autres) mais j’avais pas vue qu’il y avait un bouton signalement, je le ferais à ma prochaine lecture. Et toute façon sa oblige à réfléchir un peux plus ^^

Ben oui, c’est fait exprès pour faire réfléchir le lecteur. En effet, des fautes ont pu rester malgré les relectures. Quand tu en trouveras lors de ta prochaine lecture, n’hésite pas à les signaler et à signaler n’importe quel autre problème dans le tutoriel.

EDIT : des erreurs ont été corrigés. :)

+1 -0

Bonjour je souhaite avertir les utilisateur de Xcode qui ne comprennent pas pourquoi leur fenêtre ne s’affiche pas. En effet lorsque vous créez votre fenêtre sous Xcode sans y effectuer d’affichage dessus , ou sans utilisez les événement aucune fenêtre ne s’affichera vous ne verrez seulement l’icône de votre application apparaitre dans le Dock le temps que vous avez indiqué puis disparaitre. Donc ne paniquez pas c’est tout à fait normal lorsque vous utiliserez par exemple un événement la fenêtre apparaitra normalement.

+1 -0

Salut @Rasduinopi et merci pour le commentaire (voir ce sujet d’OC pour plus d’infos ou sur stackoverflow si l’anglais ne vous gêne pas). Je note qu’il faut ajouter cette remarque dans le tutoriel.

+0 -0

Bonjour @jhunnun10,

le tutoriel n’est pas encore disponible en PDF. Un jour il le sera et mieux encore, un jour, il y aura de nouveaux chapitres !

+0 -0

Bonjour, très bon tuto, j’apprends plein de choses !! Par contre, deux petites questions : -dans le chapitre de la modification pixels par pixels, dans la partie Les Textures / Modifier les pixels, il y a un programme qui fait un dégradé dans un carré de 255 par 255, et bien dans ce programme, un pointeur pixels; est défini au début, puis il revient dans une boucle for en étant utilisé comme un tableau (pixels[i * WIDTH + j]*) mais je ne comprends pas pourquoi aucune taille n’a été donnée au tableau en début de programme… Pourquoi n’a t on pas initialisé le tableau comme ça : pixels[WIDTH x HEIGHT]; -et aussi comme ça ce fait qu’il existe des pointeurs de type void ?? (ps : je débute en c donc aidez moi à résoudre ce problème fondamental et existentiel svp )

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte