grabon Temat założony przez niniejszego użytkownika |
[Allegro] Nakładanie 2 obrazków. » 2008-08-11 22:05:03 Jak wyświetlić dwa obrazki jeden na drugim, mi wyświetla się tylko jeden -> tlo.pcx #include <allegro.h> volatile long speed = 0; void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed ); LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed );
int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT, 1024, 768, 0, 0 ); BITMAP * bufor = NULL; BITMAP * old = NULL; BITMAP * tlo = NULL; bufor = create_bitmap( 1024, 768 ); old = load_pcx( "Data/old.pcx", default_palette ); tlo = load_pcx( "Data/tlo.pcx", default_palette ); int old_x = 100, old_y = 100; int tlo_x = 0, tlo_y = 0; while( !key[ KEY_ESC ] ) { if(( key[ KEY_A ] ) &&( old_x > 0 ) ) old_x--; if(( key[ KEY_D ] ) &&( old_x < 960 ) ) old_x++; if(( key[ KEY_W ] ) &&( old_y > 0 ) ) old_y--; if(( key[ KEY_S ] ) &&( old_y < 704 ) ) old_y++; clear_to_color( bufor, makecol( 150, 150, 150 ) ); rest( 10 ); masked_blit( old, bufor, 0, 0, old_x, old_y, old->w, old->h ); masked_blit( tlo, bufor, 0, 0, tlo_x, tlo_y, tlo->w, tlo->h ); blit( bufor, screen, 0, 0, 0, 0, 1024, 768 ); } destroy_bitmap( old ); destroy_bitmap( tlo ); destroy_bitmap( bufor ); allegro_exit(); return 0; } END_OF_MAIN(); |
|
DejaVu |
» 2008-08-11 23:13:13 Widzisz tylko jeden obrazek, ponieważ zgodnie z fragmentem kodu: masked_blit( old, bufor, 0, 0, old_x, old_y, old->w, old->h ); masked_blit( tlo, bufor, 0, 0, tlo_x, tlo_y, tlo->w, tlo->h ); Wynika, że najpierw rysujesz old, a później na nim rysujesz tlo. Tło prawdopodobnie ma wymiary takie jak rozdzielczość ekranu, więc tłem zakrywasz cały obrazek wcześniej naniesiony do bufora. Zmień kolejność linijek na: masked_blit( tlo, bufor, 0, 0, tlo_x, tlo_y, tlo->w, tlo->h ); masked_blit( old, bufor, 0, 0, old_x, old_y, old->w, old->h ); |
|
grabon Temat założony przez niniejszego użytkownika |
» 2008-08-11 23:49:46 Wielkie dzięki, pomogło, fakt faktem, że mogłem trochę pomyśleć ;) Zmieniałem kolejność wczytywania, a o kolejności wyświetlania nie pomyślałem. |
|
« 1 » |