< Return to Video

https:/.../low_d_Documentation_-_Minilibx_-_introduction.mp4

  • 0:06 - 0:09
    Bonjour bienvenu dans cette vidéo d'introduction
  • 0:09 - 0:13
    de la minilibX alors vous débuté la programmation
  • 0:13 - 0:16
    et faire tout de suite des jolis dessins dans
  • 0:16 - 0:18
    des fenêtres c'est pas forcément la chose
  • 0:18 - 0:21
    la plus facile et la plus aisé avec les bases
  • 0:21 - 0:24
    de C que vous avez actuellement.
  • 0:24 - 0:27
    Donc nous vous fournissons une librairie
  • 0:27 - 0:28
    faite maison qui s'appelle la minilibX et
  • 0:28 - 0:32
    qui va vous permettre de commencer rapidement
  • 0:32 - 0:35
    à faire des jolis dessins dans des fenêtres
  • 0:35 - 0:37
    cette petite vidéo va vous expliquer les
  • 0:37 - 0:38
    rudiments, les tous premiers pas qu'il
  • 0:38 - 0:41
    vous faut connaitre pour pouvoir faire vos
  • 0:41 - 0:44
    projets graphique, notamment le FdF qui
  • 0:44 - 0:46
    sera surement le premier projet que vous
  • 0:46 - 0:49
    allez rencontrer. Alors pour cela nous allons
  • 0:49 - 0:52
    tout simplement prendre notre terminal
  • 0:52 - 0:53
    et commencer à regarder un petit peu ce que
  • 0:53 - 0:57
    nous avons à disposition. Alors nous avons donc
  • 0:57 - 0:59
    à disposition bah tout d'abord les man de
  • 0:59 - 1:04
    la minilibX, si je fais man mlx vous allez voir
  • 1:04 - 1:05
    que vous avez un premier man qui est un
  • 1:05 - 1:08
    man introductif de la minilibX et qui va vous
  • 1:08 - 1:11
    permettre de faire une accroche, de commencer
  • 1:11 - 1:14
    vos premiers projet en C et vos premiers projets
  • 1:14 - 1:18
    graphiques. Alors la minilibX va décrire un petit
  • 1:18 - 1:21
    peu le contexte, qu'est ce qu'elle fait, elle va
  • 1:21 - 1:24
    vous parler de son mode de fonctionnement
  • 1:24 - 1:27
    à la fois dans l'univers linux, bsd, avec
  • 1:27 - 1:29
    l'environnement graphique Xwindow mais
  • 1:29 - 1:32
    aussi et c'est le cas de la minilibX que vous avez
  • 1:32 - 1:34
    d'installé sur les dump mac elle va vous
  • 1:34 - 1:37
    expliquer de quelle façon globalement elle
  • 1:37 - 1:42
    fonctionne sur macOS. Vous avez un include
  • 1:42 - 1:45
    mlx.h qui va vous permettre d'accéder aux
  • 1:45 - 1:49
    différentes fonctions de l'API de la minilibX
  • 1:49 - 1:52
    La première fonction qui était tout au début
  • 1:52 - 1:57
    de ce man s'appelle mlx_init vous l'avez ici
  • 1:57 - 1:59
    au début et cette fonction là va permettre
  • 1:59 - 2:02
    d'établir la connexion entre votre programme
  • 2:02 - 2:05
    et le serveur graphique l'idée principale va
  • 2:05 - 2:08
    être la suivante, vous allez au travers de
  • 2:08 - 2:10
    cette connexion finalement envoyer des
  • 2:10 - 2:12
    ordres pour dessiner des choses, pour
  • 2:12 - 2:15
    ouvrir une fenêtre, pour faire des dessins
  • 2:15 - 2:16
    à l'intérieur de cette fenêtre et vous allez
  • 2:16 - 2:18
    récupérer des informations qui vont être
  • 2:18 - 2:21
    ce qu'on appellera des évènements qui seront
  • 2:21 - 2:25
    décris expliqué dans une seconde vidéo.
  • 2:25 - 2:27
    On va commencer par la première étape
  • 2:27 - 2:28
    ouvrir une première fenêtre à l'écran
  • 2:28 - 2:32
    et puis ensuite créer un dessin, dessiner
  • 2:32 - 2:35
    quelque chose à l'intérieur.
  • 2:35 - 2:37
    Alors pour cela nous allons faire un premier
  • 2:37 - 2:44
    projet, on va faire un main.c
  • 2:48 - 2:52
    Alors dans ce main.c on a vu qu'on a
  • 2:52 - 2:58
    besoin d'inclure mlx.h et ensuite on va
  • 2:58 - 3:05
    faire un main, on ne s'occupe pas de argv, argc
  • 3:05 - 3:09
    pour le moment et on a vu qu'il nous fallait
  • 3:09 - 3:14
    appeler mlx_init() au début. Alors si vous
  • 3:14 - 3:17
    avez remarqué, je reprends le man de mlx
  • 3:17 - 3:21
    mlx_init renvoie un void* globalement
  • 3:21 - 3:23
    mlx_init va vous renvoyer un pointeur
  • 3:23 - 3:26
    et ce pointeur va servir d'identifiant
  • 3:26 - 3:29
    pour la connexion avec le serveur graphique
  • 3:29 - 3:32
    c'est une valeur dont vous n'avez globalement
  • 3:32 - 3:34
    rien à faire mais qui vous sera redemandé
  • 3:34 - 3:35
    pour tout les autres appels aux autres
  • 3:35 - 3:37
    fonctions de la minilibX ça leurs permettra aux
  • 3:37 - 3:40
    autres fonctions de réutiliser la même connexion
  • 3:40 - 3:45
    vers le serveur. Donc on va sauvegarder le
  • 3:45 - 3:49
    fameux void* qui est récupéré.
  • 3:55 - 3:58
    On va l'appeler mlx
  • 3:58 - 4:01
    et on va donc faire mlx=mlx_init() donc
  • 4:01 - 4:04
    ça va nous permettre de créer la connexion
  • 4:04 - 4:05
    mais notre programme il va s'arrêter là
  • 4:05 - 4:08
    directement on va rapidement passer à
  • 4:08 - 4:10
    l'étape suivante tout de même.
  • 4:10 - 4:13
    Alors si vous avez regardé un petit peu
  • 4:13 - 4:17
    déjà le man de mlx jusqu'au bout, vous
  • 4:17 - 4:20
    avez en bas, un descriptif des principales
  • 4:20 - 4:21
    fonctions qui sont disponible dans la
  • 4:21 - 4:24
    librairie notamment mlx_new_window
  • 4:24 - 4:25
    qui va vous permettre de créer une
  • 4:25 - 4:28
    nouvelle fenêtre et mlx_pixel_put qui
  • 4:28 - 4:30
    va permettre d'allumer un pixel de la
  • 4:30 - 4:32
    couleur que vous voulez à l'intérieur de
  • 4:32 - 4:36
    cette fenêtre. Vous les retrouvez bien
  • 4:36 - 4:39
    évidement dans les autres man qui sont
  • 4:39 - 4:41
    disponible notamment le fameux man
  • 4:41 - 4:46
    de mlx_new_window
  • 4:49 - 4:52
    Le man de mlx_new_window va nous indiquer
  • 4:52 - 4:53
    les différents paramètres qu'il faut transmettre
  • 4:53 - 4:55
    à cette fonction pour pouvoir créer une fenêtre
  • 4:55 - 4:59
    le premier paramètre s'appelle mlx_ptr
  • 4:59 - 5:03
    il est là, c'est tout simplement le void*
  • 5:03 - 5:07
    qu'on a récupéré de mlx_init, la taille
  • 5:07 - 5:11
    X et Y, sizeX, sizeY, les dimensions de la
  • 5:11 - 5:14
    fenêtre et une chaine de caractères qui
  • 5:14 - 5:21
    va être le titre de la fenêtre, on reprend notre emacs
  • 5:22 - 5:28
    mlx_new_window on a vu que le premier
  • 5:28 - 5:30
    paramètre c'était ce que nous avait renvoyé
  • 5:30 - 5:33
    mlx_init on va créer une fenêtre qui va faire
  • 5:33 - 5:37
    par exemple 400 pixels sur 400 pixels et
  • 5:37 - 5:40
    on va l'appeler mlx_42 ça va être le titre
  • 5:40 - 5:45
    de notre fenêtre. Alors vous pouvez voir que
  • 5:45 - 5:47
    globalement là encore je récupère ce que me
  • 5:47 - 5:52
    renvoit mlx_new_window un void* qui va être
  • 5:52 - 5:55
    de la même façon un identifiant de la fenêtre
  • 5:55 - 5:56
    la minilibX vous permet d'ouvrir simultanément
  • 5:56 - 5:59
    plusieurs fenêtres et pour savoir dans quelle
  • 5:59 - 6:01
    fenêtre vous voulez agir ou dans quelle fenêtre
  • 6:01 - 6:03
    vous voulez récupérer ce qu'on verra plus tard
  • 6:03 - 6:06
    c'est à dire les évènements clavier et souris
  • 6:06 - 6:08
    qui vont pouvoir arriver, il faudra préciser
  • 6:08 - 6:10
    l'identifiant de la fenêtre pour savoir sur
  • 6:10 - 6:13
    quelle fenêtre vous travaillez. Alors très
  • 6:13 - 6:15
    basiquement là voilà on a créé la connexion
  • 6:15 - 6:17
    au serveur, on a ouvert une fenêtre, si on
  • 6:17 - 6:21
    veut pouvoir déjà voir un petit peu ce que
  • 6:21 - 6:24
    ça donne, on va compiler le tout.
  • 6:25 - 6:27
    Au cas où vous l'auriez pas remarqué le man
  • 6:27 - 6:30
    de la minilibX vous indique également comment
  • 6:30 - 6:34
    compiler: linking minilibX soit en environnement
  • 6:34 - 6:36
    X-Window avec les librairies qui sont nécessaire
  • 6:36 - 6:38
    pour ça, soit en environnement macOS avec
  • 6:38 - 6:42
    les framework qui sont nécessaire pour ça
  • 6:42 - 6:44
    Donc là vous voyez que en étant en environnemnt
  • 6:44 - 6:48
    macOS on va utilise -mlx -Framework OpenGL
  • 6:48 - 6:58
    et AppKit. Compilons donc notre mail.c en lui
  • 6:58 - 7:04
    transmettant mon lmlx la minilibX
  • 7:06 - 7:09
    le framework OpenGL
  • 7:12 - 7:15
    et le framework AppKit et donc là nous à créé
  • 7:15 - 7:20
    notre binaire mlx que je vais m'apprêter à
  • 7:20 - 7:21
    lancer et qui rend la main tout de suite
  • 7:21 - 7:24
    parce qu'une fois qu'on a créé la fenêtre
  • 7:24 - 7:26
    le programme s'arrête tout simplement.
  • 7:26 - 7:27
    Alors vous allez me dire "oué alors si on
  • 7:27 - 7:28
    veut voir la fenêtre, qu'est ce qu'on fait"
  • 7:30 - 7:33
    On va pour ça, avoir plusieurs solutions
  • 7:33 - 7:36
    la plus simple serait d'utiliser la fonction
  • 7:36 - 7:40
    système sleep() ici, qui fait un délai qui
  • 7:40 - 7:43
    vous ferait attendre je sais pas 5 sec, 10 sec
  • 7:43 - 7:45
    pour voir la fenêtre apparaitre.
  • 7:45 - 7:48
    C'est pas une solution qui est viable tout
  • 7:48 - 7:51
    simplement parce que la fenêtre ne va pas
  • 7:51 - 7:53
    apparaitre au moment ou vous appelez
  • 7:53 - 7:57
    mlx_new_window elle va apparaitre une fois
  • 7:57 - 8:01
    que l'ensemble du système graphique de macOS
  • 8:01 - 8:04
    va prendre la main et pour faire cela il faut
  • 8:04 - 8:08
    que appeliez la fonction mlx_loop qui elle
  • 8:08 - 8:12
    prend comme paramètre l'identifiant de
  • 8:12 - 8:13
    la connexion.
  • 8:13 - 8:16
    mlx_loop va servir pour gérer les évènements
  • 8:16 - 8:18
    ce sera l'objet de la vidéo suivante et elle
  • 8:18 - 8:21
    va servir surtout pour donner la main à
  • 8:21 - 8:24
    l'ensemble du système graphique mac
  • 8:24 - 8:27
    j'ai créé la fenêtre, et maintenant je rends
  • 8:27 - 8:29
    la main à mlx_loop, je rends la main au
  • 8:29 - 8:32
    système graphique mac qui lui va se charger
  • 8:32 - 8:34
    d'afficher la fenêtre, il va pas le faire de
  • 8:34 - 8:36
    façon instantané, il va le faire de façon
  • 8:36 - 8:38
    asynchrone et pour qu'il puisse le faire
  • 8:38 - 8:44
    on a besoin de rentrer dans cette phase là.
  • 8:44 - 8:48
    Donc cette fois si je compile à nouveau
  • 8:48 - 8:51
    et que je lance, j'ai maintenant la fenêtre
  • 8:51 - 8:55
    qui s'affiche, elle est là. mlx_loop est
  • 8:55 - 8:58
    comme son nom l'indique, une boucle
  • 8:58 - 9:03
    une loop, elle rend pas la main tout simplement
  • 9:03 - 9:05
    donc si vous voulez sortir du programme
  • 9:05 - 9:07
    il faudra que vous le prévoyiez d'une façon
  • 9:07 - 9:09
    ou d'une autre, par exemple lorsque vous
  • 9:09 - 9:11
    aurez appuyé sur une touche ce sera une
  • 9:11 - 9:13
    façon d'appeler la fonction exit qui arrêtera
  • 9:13 - 9:16
    votre programme mais mlx_loop elle ne va
  • 9:16 - 9:19
    jamais vous rendre la main
  • 9:19 - 9:22
    Alors on va rapidement regardé maintenant
  • 9:22 - 9:25
    de quelle façon on va pouvoir effectuer
  • 9:25 - 9:28
    différents dessins. Je vais utiliser pour
  • 9:28 - 9:32
    l'instant la façon simple, de vous présenter
  • 9:32 - 9:38
    mlx_pixel_put qui permet d'afficher un pixel
  • 9:38 - 9:42
    à l'intérieur d'une fenêtre, les paramètres
  • 9:42 - 9:46
    de mlx_pixel_put on va les retrouver dans
  • 9:46 - 9:53
    le man en cas de doute; man mlx, mlx_pixel_put
  • 9:53 - 9:56
    voilà il y a une man dédié à mlx_pixel_put
  • 9:56 - 9:58
    c'est pas le cas de toutes les fonctions mais
  • 9:58 - 9:59
    vous trouverez les fonctions similaires
  • 9:59 - 10:03
    dans le même man.
  • 10:06 - 10:09
    mlx_pixel_put qui prend l'identifiant de la
  • 10:09 - 10:10
    connexion, l'identifiant de la fenêtre
  • 10:10 - 10:14
    les coordonnées du pixel et la couleur
  • 10:14 - 10:19
    la couleur qui est exprimée sur un int
  • 10:19 - 10:24
    Alors on est sur fenêtre qui fait 400*400
  • 10:24 - 10:29
    on va mettre un pixel en 200*200 et la couleur
  • 10:29 - 10:32
    est codée en RGB sur l'int
  • 10:35 - 10:41
    Alors les deux premiers zéros qui correspondent
  • 10:41 - 10:45
    à l'octet de poids fort
  • 10:45 - 10:47
    sont pour la transparence qui n'est dans le
  • 10:47 - 10:51
    cas du pixel_put pas géré par la minilibX
  • 10:51 - 10:53
    nous avons le rouge qui est codé sur le
  • 10:53 - 10:57
    premier FF, le vert qui est ici sur le deuxième
  • 10:57 - 11:00
    et le bleu sur le troisième on va donc avoir
  • 11:00 - 11:04
    ici un pixel de couleur blanche
  • 11:06 - 11:08
    on recompile
  • 11:09 - 11:11
    alors, vous le voyez peut-être
  • 11:11 - 11:13
    ou vous ne le voyez peut-être pas nous
  • 11:13 - 11:15
    avons bien un pixel blanc ici au milieu
  • 11:15 - 11:18
    de la fenêtre qui s'est affiché
  • 11:19 - 11:23
    si on veut faire d'avantage de pixel on
  • 11:23 - 11:27
    peut toujours s'amuser un petit peu
  • 11:27 - 11:29
    prenons
  • 11:32 - 11:34
    deux variables supplémentaires
  • 11:41 - 11:44
    faisons une petite boucle
  • 11:57 - 12:00
    faisons une deuxième boucle
  • 12:20 - 12:22
    recompilons le tout
  • 12:28 - 12:29
    et manque de bol
  • 12:29 - 12:32
    ça fait pas ce qu'il faut, c'est un grand classique
  • 12:37 - 12:44
    nous avons donc x et y
  • 12:44 - 12:49
    qui vont remplacer le 200*200
  • 12:49 - 12:51
    parce qu'afficher je ne sais combien de fois
  • 12:51 - 12:54
    le même pixel au même endroit ça n'aura
  • 12:54 - 12:58
    pas l'effet voulu, et nous avons cette fois ci
  • 12:58 - 13:03
    notre carré entre 50 et 150 sur x et sur y
  • 13:03 - 13:05
    donc ça vous donne ainsi un exemple
  • 13:05 - 13:10
    d'utilisation de mlx_pixel_put ça vous
  • 13:10 - 13:15
    donne un exemple de création de fenêtre
  • 13:15 - 13:18
    alors gardez en tête la chose suivante
  • 13:18 - 13:19
    les pixels ne sont pas dessinés à l'intérieur
  • 13:19 - 13:21
    de la fenêtre au moment où vous appelez
  • 13:21 - 13:23
    mlx_pixel_put c'est vraiment au moment où
  • 13:23 - 13:27
    mlx_loop est appelé que l'affichage sera
  • 13:27 - 13:31
    vraiment fait dans votre fenêtre, mlx_loop
  • 13:31 - 13:33
    je vous en ai déjà fait part un petit peu
  • 13:33 - 13:35
    va également s'occuper de la gestion des
  • 13:35 - 13:38
    évènements et c'est quelque chose que nous
  • 13:38 - 13:41
    allons voir dans la deuxième vidéo consacrée
  • 13:41 - 13:44
    à la minilibX, à tout de suite.
Title:
https:/.../low_d_Documentation_-_Minilibx_-_introduction.mp4
Video Language:
French
Duration:
13:44

French subtitles

Revisions