SDL2.x/Le renderer
< SDL2.x
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é:
#include <stdio.h>
#include <stdlib.h>
#include <SDL2/SDL.h>
int main (int argc , char *argv[])
{
SDL_Window *window;
SDL_Renderer *renderer;
// initalisation
SDL_Init(SDL_INIT_VIDEO);
// création d'une fenêtre et d'un renderer
SDL_CreateWindowAndRenderer(
320, 240,
SDL_WINDOW_RESIZABLE,
&window, &renderer);
// attendre 3 secondes
SDL_Delay(3000);
return 0;
}
Utilisons maintenant la fonction SDL_RenderDrawLine()
pour dessiner une série de lignes aléatoires:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <SDL2/SDL.h>
#define WIDTH 640
#define HEIGHT 480
int main (int argc , char *argv[])
{
SDL_Window *window;
SDL_Renderer *renderer;
int i, j;
Uint8 r, g, b, a;
int pax, pay, pbx, pby;
// initalisation
SDL_Init(SDL_INIT_VIDEO);
// Utilisons le temps actuel pour initialiser
// le générateur de nombre aléatoire
srand(time(0));
// création d'une fenêtre et d'un renderer
SDL_CreateWindowAndRenderer(
WIDTH, HEIGHT,
SDL_WINDOW_RESIZABLE,
&window, &renderer);
for (i = 0; i < 36; i++) {
// définir une couleur aléatoire
r = rand() % 255;
g = rand() % 255;
b = rand() % 255;
SDL_SetRenderDrawColor(
renderer, r, g, b, 255);
for (j = 0; j < 22; j++) {
// définir 2 points aléatoires
pax = rand() % WIDTH;
pay = rand() % HEIGHT;
pbx = rand() % WIDTH;
pby = rand() % HEIGHT;
// dessiner une ligne
SDL_RenderDrawLine(
renderer,
pax, pay,
pbx, pby);
}
SDL_RenderPresent(renderer);
SDL_Delay(160);
}
return 0;
}
Aller lire la documentation de l’API du module renderer.