Allegro c++ kilka pytań i problemów

0

Witam piszę gre 2d w allegro wyświetliłem i zanimowałęm już postać ale:

  • Podczas ruchu tak się dziewnie miga czy muszę dodać do niej tyle buforów ile ma klatek? ( np 10 klatek 10 buforów) Czy jest może inna metoda a bufory moge zostawić.
    -Dodając postać wszystko działa pozycja itp ale gdy chcę dodać inną grafike to najpierw się wyświetla przez około 1s ta grafika a potem normalnie postać. Czy ją źle dodaje ?(jest ona czarno biała 1000x50 i wygląda jak krata a wyświetlają się tylko białe przestrzenie między "kratami" jeśli jest na to rada to proszę o pomoc :>)
 
....
BITMAP * block6 = NULL;
BITMAP * gleba = NULL;
....
....
gleba = load_bmp( "gleba.bmp", default_palette );
block6 = load_bmp( "block6.bmp", default_palette );
....
.....
blit( gleba, screen, 0, 0, 0, 550, gleba->w, gleba->h );
int block6_x = 50, block6_y = 400;
....
....
destroy_bitmap( block6 );
destroy_bitmap( gleba );
.....
1

Żeby zlikwidować migotanie wystarczy Ci podwójne buforowanie, nie potrzebujesz więcej (w zasadzie nie używa się więcej niż 3 buforów). Ale jeśli kod wygląda tak jak pokazałeś to Ty nie używasz buforowania w ogóle. W tej linii:

 
blit( gleba, screen, 0, 0, 0, 550, gleba->w, gleba->h );

zrzucasz bitmape "gleba" prosto na ekran, a w buforowaniu chodzi o to, żeby w przypadku gdy chcesz wyświetlić kilka rzeczy naraz, najpierw załadować je wszystkie na jedna Bitmape, a dopiero potem ja wyświetlić. Przykład:

BITMAP* bufor = create_bitmap(SCREEN_W,SCREEN_H); //tworzysz nowa bitmape która posłuży jako bufor
...
blit( gleba, bufor, 0, 0, 0, 550, gleba->w, gleba->h );
blit( block6, bufor, 10, 10, 0, 550, block6->w, block6->h );
blit( image1, bufor, 20, 20, 0, 550, image1->w, image1->h );
...    //wyświetlasz na bitmapie bufor wszystko co chcesz narysować w danej klatce animacji
blit(bufor,screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);  //ładujesz zawartość bufora na ekran (wyświetlasz go)
 

Dlatego nie potrzebujesz tylu buforów co klatek, wystarczy ze co każda klatkę będziesz czyścił bufor i rysował na nim od początku.

Co do drugiego pytania to niezbyt rozumiem co masz na myśli. Daj trochę więcej informacji...

0

-Nie moge wyświetlić 2 giego obrazka(podłogi) obrazki wyświetlają się po kolei najpierw podłoże przez 1 s a potem postać

1 użytkowników online, w tym zalogowanych: 0, gości: 1