[SDL] effacer une surface
Salut j'essaie de coder un starfield horizontal (comme au bon vieux temps de l'amiga et de l'atari).
J'ai une fonction de callback d'un timer qui se charge d'afficher les points, avant de les afficher j'essaie d'effacer l’écran avec un fillRect (méthode conseillée dans un site concurrent) mais cela ne fonctionne pas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Uint32 anim(Uint32 intervalle, void *pointeur) {
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
int i=0, x=0, y=0;
for(i=0; i<NB_STARS; i++) {
x=stars1[i*2][0];
y=stars1[i*2][1];
x+=STEP1;
if(x>WIDTH) {
x=0;
y=(int)((double)rand()/(double)RAND_MAX*(WIDTH-1));
}
stars1[i*2][0]=x;
stars1[i*2][1]=y;
*((Uint32*)(ecran->pixels)+x+(y*ecran->w))=SDL_MapRGB(ecran->format, RGB1, RGB1, RGB1);
SDL_UpdateRect(ecran, x, y, 1, 1);
}
return intervalle;
} |
j'essaie de remplir l’écran de noir mais apparemment sans effet sur les pixels déjà colorés, je pensais "copier" une surface sur une autre mais je trouve ça un peu bourrin, j'aimerais savoir si il n'y a pas d'autre solutions?
Merci !