< SDL2.x
fin de la boite de navigation du chapitre

Un renderer permet de rendre des primitives de manière optimale grace à la nouvelle API apparue dans la version 2 de la SDL.

La fonction SDL_CreateWindowAndRenderer() permet d'ouvrir une fenêtre et d'initialiser un renderer associé:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <SDL2/SDL.h>
 4  
 5 int main (int argc , char *argv[])
 6 {
 7     SDL_Window *window;
 8     SDL_Renderer *renderer;
 9 
10     // initalisation
11     SDL_Init(SDL_INIT_VIDEO);
12 
13     // création d'une fenêtre et d'un renderer
14     SDL_CreateWindowAndRenderer(
15             320, 240,
16             SDL_WINDOW_RESIZABLE,
17             &window, &renderer);
18 
19     // attendre 3 secondes
20     SDL_Delay(3000);
21 
22     return 0;
23 }


Utilisons maintenant la fonction SDL_RenderDrawLine() pour dessiner une série de lignes aléatoires:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h> 
 4 #include <SDL2/SDL.h>
 5 
 6 #define WIDTH 640
 7 #define HEIGHT 480
 8 
 9 int main (int argc , char *argv[])
10 {
11     SDL_Window *window;
12     SDL_Renderer *renderer;
13     int i, j;
14     Uint8 r, g, b, a;
15     int pax, pay, pbx, pby;
16 
17     // initalisation
18     SDL_Init(SDL_INIT_VIDEO);
19 
20     // Utilisons le temps actuel pour initialiser
21     // le générateur de nombre aléatoire  
22     srand(time(0)); 
23 
24     // création d'une fenêtre et d'un renderer
25     SDL_CreateWindowAndRenderer(
26             WIDTH, HEIGHT,
27             SDL_WINDOW_RESIZABLE,
28             &window, &renderer);
29 
30     for (i = 0; i < 36; i++) {
31         // définir une couleur aléatoire
32         r = rand() % 255;
33         g = rand() % 255;
34         b = rand() % 255;
35 
36         SDL_SetRenderDrawColor(
37                 renderer, r, g, b, 255);
38 
39         for (j = 0; j < 22; j++) {
40             // définir 2 points aléatoires
41             pax = rand() % WIDTH;
42             pay = rand() % HEIGHT;
43             pbx = rand() % WIDTH;
44             pby = rand() % HEIGHT;
45 
46             // dessiner une ligne
47             SDL_RenderDrawLine(
48                     renderer,
49                     pax, pay,
50                     pbx, pby);
51         }
52         SDL_RenderPresent(renderer);
53         SDL_Delay(160);
54     }
55     return 0;
56 }


Aller lire la documentation de l’API du module renderer.

Cet article est issu de Wikiversity. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.