pekfos Temat założony przez niniejszego użytkownika |
[allegro] problem z uzyskaniem przezroczystości » 2008-11-08 10:28:41 mam problem z przezroczystością w allegro. czytałem tematy na forum na ten temat ale i tak nic z tego :( zrobiłem w paintcie kolor 255,0,255 czyli różowy. dałem na tło postaci i zmieniło się tylko to że zamiast czarnego śladu zostawia różowy. (zapomniałem dodać że postać zostawia za sobą ślad tła obrazka) |
|
DejaVu |
» 2008-11-08 12:49:04 W lekcji allegro jest napisane co trzeba zrobić aby mieć przeźroczyste tło: http://kursy.ddt.pl/?LessonId=151. /edit: masked_blit( ludek, screen, 0, 0, 200, 100, ludek->w, ludek->h ); |
|
pekfos Temat założony przez niniejszego użytkownika |
» 2008-11-08 15:26:43 nie pomaga.. nadal obraz ma tło i zostawia ślady na ekranie |
|
DejaVu |
» 2008-11-08 18:33:25 Wklej kod. |
|
grabon |
» 2008-11-09 01:14:22 Wiesz co to RGB ? Wątpię ;) |
|
lynx |
» 2008-11-09 20:05:35 Moim zdaniem powinieneś opisać problem dokładniej i starać się budować czytelniejsze zdania. Bo ja szczerze mówiąc nie zabardzo rozumiem o co Ci chodzi w pierwszym poście. Napisz to dokładnie po kolei. Napewno wtedy problem będzie lepiej zobrazowany i łatwiej będzie znaleźć rozwiązanie.
Pozdrawiam, Piotrek. |
|
pekfos Temat założony przez niniejszego użytkownika |
» 2008-11-10 10:51:46 #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(); install_mouse(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 600, 400, 0, 0 ); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) ); clear_to_color( screen, makecol( 10, 10, 10 ) ); show_mouse( screen ); BITMAP * bufor = NULL; BITMAP * obraz = NULL; bufor = create_bitmap( 600, 400 ); obraz = load_bitmap( "obraz.bmp", default_palette ); int obraz_x = 100, obraz_y = 100; while( !key[ KEY_ESC ] ) { while( speed > 0 ) { if( key[ KEY_LEFT ] ) obraz_x--; if( key[ KEY_RIGHT ] ) obraz_x++; if( key[ KEY_UP ] ) obraz_y--; if( key[ KEY_DOWN ] ) obraz_y++; speed--; clear_to_color( bufor, makecol( 150, 150, 150 ) ); } masked_blit( obraz, screen, 0, 0, obraz_x, obraz_y, obraz->w, obraz->h ); } remove_int( increment_speed ); destroy_bitmap( obraz ); allegro_exit(); return 0; } END_OF_MAIN();
|
|
lynx |
» 2008-11-10 11:56:40 Twój obraz zostawia ślad, bo tutaj masz źle napisane: clear_to_color(bufor, makecol(150,150,150)); } masked_blit( obraz, screen, 0,0, obraz_x, obraz_y, obraz->w, obraz->h);
Funkcja clear_to_color w ogóle nie czyści ekranu tylko bufor, który i tak nie jest wyświetlany. A później już wyświetlasz obraz, ale na ekranie. Powinieneś wszystkie funkcje rysujące wyświetlić w buforze(clear_to_color jest dobrze), a na koniec wyświetlić sam bufor na ekranie. Co do różowego tła to musisz się upewnić, że jest ono idealnie różowe. ;) |
|
« 1 » 2 |