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 :
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?
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 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; }
Merci !
Partager