2012-06-05 2 views
0

Je rencontre le problème que mes sprites laissent derrière moi quand je les déplace. Essayé de dessiner un BG à chaque rafraîchissement, mais il commence à scintiller.Allegro, les sprites quittant le sentier

C'est ce que je fais

// ... 

int main(int argc, char *argv[]) 
{ 
    BITMAP *buffer = NULL; 

    BITMAP *graphics = NULL; 
    buffer = create_bitmap(SCREEN_W, SCREEN_H); 

    graphics = load_bitmap("my_graphics.bmp", NULL); 
     clear_to_color(screen, makecol(0, 0, 0)); 

    clear_to_color(buffer, makecol(0, 0, 0)); 

    while(!key[KEY_ESC]) 
    { 

     // ... 

     render_map(100,100);   

     // ... 
    } 
} 

void render_map(int w, int h) 

{ 
    // ... 

    for(int i=0;i < w * h;i++) 

    { 
     masked_blit(graphics, buffer, 0, 0, pos_x, pos_y, 32, 32); 
    } 

    // ... 
     blit(buffer, screen, camera_x,camera_y,0,0,SCREEN_W, SCREEN_H); 

    clear_to_color(buffer, makecol(0, 0, 0)); 

} 

Merci d'avance pour toute aide

Répondre

0

Votre code est un peu difficile à lire, et vous avez laissé des gros morceaux de celui-ci. Il est donc difficile de dire avec certitude, mais cette ligne semble suspect:

blit(buffer, screen, camera_x,camera_y,0,0,SCREEN_W, SCREEN_H); 

Lorsque vous utilisez un tampon, vous généralement serez toujours l'appeler comme:

blit(buffer, screen, 0,0, 0,0, SCREEN_W,SCREEN_H); 

et qui est le que temps vous dessinez jamais à l'écran. Donc, les étapes sont les suivantes:

  1. effacer le tampon (en dessinant une image de fond, tileset, couleur, etc.)
  2. tout tirage au tampon
  3. copier le tampon à l'écran
  4. répétition