Blit multiple sous allegro.

Fermé
alex331501 - Modifié par alex331501 le 25/06/2011 à 19:15
Pour un programme que je fait avec la bibliothèque allegro j'aurais besoin de blitter plusieur fois mais quand il y a deux blit l'ecran laisse des marque noir voici le code ou il y a les deux blittage:
#ifndef LOOP_C_INCLUDED 
#define LOOP_C_INCLUDED 
#include <allegro.h> 
#include "define.h" 




void mainloop(BITMAP* buffer, BITMAP* souris, FONT* ecr) 
{ 

        int r = 255, g = 0, b = 0, choix = 0, taille = 1; 

            clear_to_color(buffer, makecol(blanc)); 
            show_mouse(souris); 
        while(!key[KEY_ENTER]) 
{ 
        if(key[KEY_ESC]) 
            return 0; 
            text_mode(-1); 
            textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2 - 200, makecol(rouge), "Cree par alexandre"); 
            textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2 - 150, makecol(rouge), "s: enregistrer"); 
            textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2 - 100, makecol(rouge), "l: ouvrir bmp dessin.bmp"); 
            textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2 - 50, makecol(rouge), "a/q: afficher/cacher le curseur"); 
            textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2, makecol(rouge), "clique gauche/droit: desinner     Tourner roue souris: effacer        n = nouveau dessin\nechape = quitter"); 
            textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2 + 50, makecol(rouge), "Bleu: b    Rouge: r    Blanc = w   Vert: v     Beige: p    Jaune: j    Gris: g     Orange: o     Noir: n     Marron: m   chiffre = taille"); 
            textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2 + 100, makecol(rouge), "Appuyer sur entrer pour continuer"); 
            blit(buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H); 
} 


            clear_to_color(buffer, makecol(blanc)); 
            rouge; 
       while(!key[KEY_ESC]) 

{ 

    if(mouse_b & 2) 
        rectfill(buffer, mouse_x, mouse_y, mouse_x + taille, mouse_y + taille, makecol(r, g, b)); 
    else if(mouse_b & 1) 
        circlefill(buffer, mouse_x, mouse_y, taille, makecol(r, g, b)); 
    else if(mouse_z & 1) 
        blanc; 
    else if (keypressed()) 
    { 
        choix=readkey(); 
    switch(choix >> 8) 
{ 


    case KEY_O: 
        orange; 
    break; 


    case KEY_G: 
        gris; 
    break; 


    case KEY_R: 
        rouge; 
    break; 

    case KEY_M: 
        marron; 
    break; 

    case KEY_P: 
        beige; 
    break; 


    case KEY_B: 
        bleu; 
    break; 


    case KEY_Z: 
        blanc; 
    break; 


    case KEY_V: 
        vert; 
    break; 

    case KEY_J: 
        jaune; 
    break; 

    case KEY_N: 
        clear_to_color(buffer, makecol(blanc)); 
    break; 



    case KEY_S: 
        save_bitmap("dessin.pcx", buffer, NULL); 
    break; 


    case KEY_L: 
        clear_bitmap(buffer); 
        buffer = load_bitmap("dessin.pcx", NULL); 
    if(!buffer) 
        buffer = load_bitmap("dessin.tga", NULL); 
    else if(!buffer) 
        buffer = load_bitmap("dessin.bmp", NULL); 
    else if(!buffer) 
        buffer = load_bitmap("dessin.lbm", NULL); 
    else if(!buffer) 
{ 
        set_gfx_mode(GFX_TEXT, 0, 0, 0, 0); 
        allegro_message("Erreur chargement image inexistante\nVerifier que le nom de l'image soit bien:\ndessin.pcx/bmp/lbm/tga\ 
                                \n%s", allegro_error); 
    return -1; 
} 
    break; 

    case KEY_1_PAD: 
        taille = tres_petit; 
    break; 

    case KEY_2_PAD: 
        taille = petit; 
    break; 

    case KEY_3_PAD: 
        taille = moyen; 
    break; 

    case KEY_4_PAD: 
        taille = moyen_grand; 
    break; 

    case KEY_5_PAD: 
        taille = grand; 
    break; 

    case KEY_6_PAD: 
        taille = grand_moyen; 
    break; 

    case KEY_7_PAD: 
        taille = tres_grand; 
    break; 

    } 
} 
        blit(souris, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H); 
        blit(buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H); 
        clear_bitmap(souris); 

} 
} 

#endif // LOOP_C_INCLUDED

Merci.