bonjour,

je parviens à tracer des points sur un graph en SDL, et pour les relier et donner l'allure d'une courbe, j'utilise une fonction "line" décrite dans un tutoriel sur ce site (http://anomaly.developpez.com/tutoriel/sdl/partie2/), j'ai donc ajouter cette partie à la fin de mon programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
void setPixel(int x, int y, Uint32 coul)
{
 SDL_Surface*ecran;
ecran = SDL_SetVideoMode(640,480,32,SDL_HWSURFACE);
  *((Uint32*)(ecran->pixels) + x + y * ecran->w) = coul;
}
 
void setPixelVerif(int x, int y, Uint32 coul)
{
 SDL_Surface*ecran;
ecran = SDL_SetVideoMode(640,480,32,SDL_HWSURFACE);
  if (x >= 0 && x < ecran->w &&
      y >= 0 && y < ecran->h)
    setPixel(x, y, coul);
}
 
void echangerEntiers(int* x, int* y)
{
  int t = *x;
  *x = *y;
  *y = t;
}
 
/*----------fonction ligne----------*/
void line(int x1, int y1, int x2, int y2, Uint32 coul)
{
  int d, dx, dy, aincr, bincr, xincr, yincr, x, y;
 
  if (abs(x2 - x1) < abs(y2 - y1)) {
    /* parcours par l'axe vertical */
 
    if (y1 > y2) {
      echangerEntiers(&x1, &x2);
      echangerEntiers(&y1, &y2);
    }
 
    xincr = x2 > x1 ? 1 : -1;
    dy = y2 - y1;
    dx = abs(x2 - x1);
    d = 2 * dx - dy;
    aincr = 2 * (dx - dy);
    bincr = 2 * dx;
    x = x1;
    y = y1;
 
    setPixelVerif(x, y, coul);
 
    for (y = y1+1; y <= y2; ++y) {
      if (d >= 0) {
	x += xincr;
	d += aincr;
      } else
	d += bincr;
 
    setPixelVerif(x, y, coul);
    }
 
  } else {
    /* parcours par l'axe horizontal */
 
    if (x1 > x2) {
      echangerEntiers(&x1, &x2);
      echangerEntiers(&y1, &y2);
    }
 
    yincr = y2 > y1 ? 1 : -1;
    dx = x2 - x1;
    dy = abs(y2 - y1);
    d = 2 * dy - dx;
    aincr = 2 * (dy - dx);
    bincr = 2 * dy;
    x = x1;
    y = y1;
 
  setPixelVerif(x, y, coul);
 
    for (x = x1+1; x <= x2; ++x) {
      if (d >= 0) {
	y += yincr;
	d += aincr;
      } else
	d += bincr;
 
      setPixelVerif(x, y, coul);
    }
  }
}
or il m'affiche désormais un écran noir alors qu'avant de rajouter tout ca j'avais les points de mon graph tracés.
Est-ce que je dois remplacer "ecran->w" ,"ecran->pixels" ... par leur valeur ou faire d'autres modifications?

Merci d'avance pour votre aide