SlideShare une entreprise Scribd logo
1  sur  14
PROGRAMMATION D’UNE INTERFACE
GRAPHIQUE
1
Simple DirectMedia Layer
• Bibliothèque de développement multiplateforme
– UNIX, LINUX, WINDOWS, MAC, Mobiles
• Ecrite en C, utilisable avec plein d’autres langages
• Née en 1998 et en version 2 depuis 2013
• Bas niveau aux périphériques et à la couche graphique
– OpenGL et Direct3D
– Greffons standards et moins standards
• SDL2_TTF, SDL2_mixer, SDL2_image, SDL2_net, SDL2_gfx
• Orientée événements
• Multifenêtres
2
Bibliothèque multiplateforme
3
Votre application toute belle et toute innovante !
SDL Module 1 Module 2
Xlib Direct X
Matériel
Autre système
caché
Bibliothèque bas niveau
• Formes basiques
– Points, lignes, rectangles et des textures !
– Ecrire à l’écran dans le greffon standard SDL2_TTF
– Lire des formats images autre que BMP avec SDL2_Image
– Les ellipses dans le greffon non standard SDL2_GFX
• Pas de composants hormis les fenêtres ou boites de dialogues
4
Squelette d’une application SDL
• Initialisations graphiques
– Variables globales ?
– Structures
• Boucle principale = gestion des événements asynchrones
– Attente d’un événement (bloquant ou non)
– Gestion de l’événement
• Rendu des ressources graphiques
5
File d’attente des événements
• Permet une gestion asynchrone des événements
• Lecture bloquante ou non d’un événement
• Eventuellement avec une limite
• Insertion d’événement système / système graphique / utilisateur
• Filtrage possible avant insertion
• Désactivation d’événements
6
Types d’événements (1)
• Structure SDL_event avec un champ type
• Système (notamment sur les mobiles)
• Clavier
• Souris
• Contrôleur / joystick / toucher / mouvement
• Moteur de rendu
• Audio
• Utilisateur
• Fenêtre 
7
Types d’événements (2) - Fenêtre
• Affichage / exposition
• Focus clavier
• Entrée ou sortie de la souris
• Fermeture
• Réduction / restauration / maximisation
• Redimensionnement
8
Contexte de moteur de rendu (renderer)
• Dessin 2D dans une zone
mémoire-tampon (buffer)
• Affichage différé
• Exploitation des capacités
des cartes graphiques
9
Effacer la zone mémoire
Changer de couleur
Dessiner
Afficher
Texture
• Zone dans laquelle on peut dessiner
– Chargement d’images
– Police de caractères (police TTF)
– Import de surface (SDL 1.2)
– Potentiellement gérée/accélérée par le matériel
• Cible temporaire d’un renderer
• Copie d’une texture vers un renderer
10
Codes fournis
• Initialisation de la bibliothèque SDL2
• Exemple d’affichage d’un rectangle, d’un texte et d’un image
• Gestion de quelques événéments
11
12
Opérations binaires en C
0 0 0
0 1 1
1 0 1
1 1 1
0 0 0
0 1 0
1 0 0
1 1 1
0 0 0
0 1 1
1 0 1
1 1 0
OU
|
ET
&
OU EXCLUSIF
^
Mettre à 1 les bits
d’un masque en fonction de certains critères
Afficher deux fois un pixel l’efface
Exemples
• 5 && 7
• 5 || 7
• !5
• 5 & 7
• 5 | 7
• 5 << 2
• 5 >> 2
• ~ 5
13
2n 64 32 16 8 4 2 1
5 0 0 0 0 1 0 1
7 0 0 0 0 1 1 1
Dessiner
14
(0,0)
y
x
Hauteur/
height
Largeur/ width
Couleurs : (ROUGE, VERT, BLEU, ALPHA)

Contenu connexe

Tendances

Les fondamentaux du langage C
Les fondamentaux du langage CLes fondamentaux du langage C
Les fondamentaux du langage CAbdoulaye Dieng
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Parischristophep21
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Microsoft
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielleECAM Brussels Engineering School
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptMicrosoft
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
de l'art binaire: des PEs explosifs fait main
de l'art binaire: des PEs explosifs fait mainde l'art binaire: des PEs explosifs fait main
de l'art binaire: des PEs explosifs fait mainAnge Albertini
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionECAM Brussels Engineering School
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationECAM Brussels Engineering School
 
Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieurFredy Fadel
 
Csharp1 : quelques elements de base
Csharp1 :  quelques elements de baseCsharp1 :  quelques elements de base
Csharp1 : quelques elements de baseAbdoulaye Dieng
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...ECAM Brussels Engineering School
 

Tendances (19)

Johnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScriptJohnny-Five : Robotique et IoT en JavaScript
Johnny-Five : Robotique et IoT en JavaScript
 
Python avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiers
 
Les fondamentaux du langage C
Les fondamentaux du langage CLes fondamentaux du langage C
Les fondamentaux du langage C
 
Cours javascript v1
Cours javascript v1Cours javascript v1
Cours javascript v1
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Paris
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
de l'art binaire: des PEs explosifs fait main
de l'art binaire: des PEs explosifs fait mainde l'art binaire: des PEs explosifs fait main
de l'art binaire: des PEs explosifs fait main
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
 
Outils de gestion de projets
Outils de gestion de projetsOutils de gestion de projets
Outils de gestion de projets
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
 
Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieur
 
Python avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codagePython avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codage
 
Csharp1 : quelques elements de base
Csharp1 :  quelques elements de baseCsharp1 :  quelques elements de base
Csharp1 : quelques elements de base
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...
 

Similaire à Introduction à la SDL2

Les technologies Open Source pour les interfaces graphiques embarquées
Les technologies Open Source pour les interfaces graphiques embarquéesLes technologies Open Source pour les interfaces graphiques embarquées
Les technologies Open Source pour les interfaces graphiques embarquéesAlexandre LAHAYE
 
Open Wide : Les interfaces graphiques dans l'embarque
Open Wide : Les interfaces graphiques dans l'embarqueOpen Wide : Les interfaces graphiques dans l'embarque
Open Wide : Les interfaces graphiques dans l'embarqueAlexandre LAHAYE
 
Net duino et le .net micro framework
Net duino et le .net micro frameworkNet duino et le .net micro framework
Net duino et le .net micro frameworkVincent Hubert
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Les Interfaces graphiques à la mode
Les Interfaces graphiques à la modeLes Interfaces graphiques à la mode
Les Interfaces graphiques à la modeElwan Ndiaye
 
Présentation de HDRP
Présentation de HDRPPrésentation de HDRP
Présentation de HDRPYannick Comte
 
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel librePierre Ficheux
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...Pôle Systematic Paris-Region
 
Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009LINAGORA
 
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL   PROGRAMMATION ET _ETAPES pour comprendreCOURS VHDL   PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendreMariamHafsa
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Pierre-jean Texier
 
Initiation ordinateur
Initiation ordinateurInitiation ordinateur
Initiation ordinateurcamelia55
 
Release note de 4D_Additive 1.4
Release note de 4D_Additive 1.4Release note de 4D_Additive 1.4
Release note de 4D_Additive 1.4CORETECHNOLOGIE
 
Materiel informatique 2011
Materiel informatique 2011Materiel informatique 2011
Materiel informatique 2011Jouhadi mehdi
 

Similaire à Introduction à la SDL2 (20)

Les technologies Open Source pour les interfaces graphiques embarquées
Les technologies Open Source pour les interfaces graphiques embarquéesLes technologies Open Source pour les interfaces graphiques embarquées
Les technologies Open Source pour les interfaces graphiques embarquées
 
Open Wide : Les interfaces graphiques dans l'embarque
Open Wide : Les interfaces graphiques dans l'embarqueOpen Wide : Les interfaces graphiques dans l'embarque
Open Wide : Les interfaces graphiques dans l'embarque
 
Net duino et le .net micro framework
Net duino et le .net micro frameworkNet duino et le .net micro framework
Net duino et le .net micro framework
 
Cours SDL2 (partie 1)
Cours SDL2 (partie 1)Cours SDL2 (partie 1)
Cours SDL2 (partie 1)
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Les Interfaces graphiques à la mode
Les Interfaces graphiques à la modeLes Interfaces graphiques à la mode
Les Interfaces graphiques à la mode
 
Présentation de HDRP
Présentation de HDRPPrésentation de HDRP
Présentation de HDRP
 
Tizen sdk-solutionslinux-20130529
Tizen sdk-solutionslinux-20130529Tizen sdk-solutionslinux-20130529
Tizen sdk-solutionslinux-20130529
 
11776626.ppt
11776626.ppt11776626.ppt
11776626.ppt
 
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
 
Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009
 
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL   PROGRAMMATION ET _ETAPES pour comprendreCOURS VHDL   PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
 
Démo puppet et état du projet
Démo puppet et état du projetDémo puppet et état du projet
Démo puppet et état du projet
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'
 
Initiation ordinateur
Initiation ordinateurInitiation ordinateur
Initiation ordinateur
 
Release note de 4D_Additive 1.4
Release note de 4D_Additive 1.4Release note de 4D_Additive 1.4
Release note de 4D_Additive 1.4
 
Chapitre3 prog dsplf3
Chapitre3 prog dsplf3Chapitre3 prog dsplf3
Chapitre3 prog dsplf3
 
Materiel informatique 2011
Materiel informatique 2011Materiel informatique 2011
Materiel informatique 2011
 

Introduction à la SDL2

  • 2. Simple DirectMedia Layer • Bibliothèque de développement multiplateforme – UNIX, LINUX, WINDOWS, MAC, Mobiles • Ecrite en C, utilisable avec plein d’autres langages • Née en 1998 et en version 2 depuis 2013 • Bas niveau aux périphériques et à la couche graphique – OpenGL et Direct3D – Greffons standards et moins standards • SDL2_TTF, SDL2_mixer, SDL2_image, SDL2_net, SDL2_gfx • Orientée événements • Multifenêtres 2
  • 3. Bibliothèque multiplateforme 3 Votre application toute belle et toute innovante ! SDL Module 1 Module 2 Xlib Direct X Matériel Autre système caché
  • 4. Bibliothèque bas niveau • Formes basiques – Points, lignes, rectangles et des textures ! – Ecrire à l’écran dans le greffon standard SDL2_TTF – Lire des formats images autre que BMP avec SDL2_Image – Les ellipses dans le greffon non standard SDL2_GFX • Pas de composants hormis les fenêtres ou boites de dialogues 4
  • 5. Squelette d’une application SDL • Initialisations graphiques – Variables globales ? – Structures • Boucle principale = gestion des événements asynchrones – Attente d’un événement (bloquant ou non) – Gestion de l’événement • Rendu des ressources graphiques 5
  • 6. File d’attente des événements • Permet une gestion asynchrone des événements • Lecture bloquante ou non d’un événement • Eventuellement avec une limite • Insertion d’événement système / système graphique / utilisateur • Filtrage possible avant insertion • Désactivation d’événements 6
  • 7. Types d’événements (1) • Structure SDL_event avec un champ type • Système (notamment sur les mobiles) • Clavier • Souris • Contrôleur / joystick / toucher / mouvement • Moteur de rendu • Audio • Utilisateur • Fenêtre  7
  • 8. Types d’événements (2) - Fenêtre • Affichage / exposition • Focus clavier • Entrée ou sortie de la souris • Fermeture • Réduction / restauration / maximisation • Redimensionnement 8
  • 9. Contexte de moteur de rendu (renderer) • Dessin 2D dans une zone mémoire-tampon (buffer) • Affichage différé • Exploitation des capacités des cartes graphiques 9 Effacer la zone mémoire Changer de couleur Dessiner Afficher
  • 10. Texture • Zone dans laquelle on peut dessiner – Chargement d’images – Police de caractères (police TTF) – Import de surface (SDL 1.2) – Potentiellement gérée/accélérée par le matériel • Cible temporaire d’un renderer • Copie d’une texture vers un renderer 10
  • 11. Codes fournis • Initialisation de la bibliothèque SDL2 • Exemple d’affichage d’un rectangle, d’un texte et d’un image • Gestion de quelques événéments 11
  • 12. 12 Opérations binaires en C 0 0 0 0 1 1 1 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 OU | ET & OU EXCLUSIF ^ Mettre à 1 les bits d’un masque en fonction de certains critères Afficher deux fois un pixel l’efface
  • 13. Exemples • 5 && 7 • 5 || 7 • !5 • 5 & 7 • 5 | 7 • 5 << 2 • 5 >> 2 • ~ 5 13 2n 64 32 16 8 4 2 1 5 0 0 0 0 1 0 1 7 0 0 0 0 1 1 1

Notes de l'éditeur

  1. SDL_ShowSimpleMessageBox
  2. Disparition : fenetre cachée par le système
  3. Une surface est aussi une image mais dont le rendu est toujours software
  4. Complément à 1 : tilde