Loodwin Temat założony przez niniejszego użytkownika |
[Allegro 5]Problem z wyświetlaniem grafiki » 2014-06-21 12:18:22 Witam! Otóż mam taki problem, że po prawidłowym skompilowaniu kodu wyskakuje okienko, że program przestał działać. Wiem, że coś złego jest w metodzie wyświetlającej, więc tylko takową wstawiam: void draw( ALLEGRO_BITMAP * bufor ) { al_set_target_bitmap( bufor ); al_draw_bitmap( graphic, x, y, 0 ); }
Wywołuję ją tak: Nie wiem czy dobrze myślę, ale chyba problem tkwi w przekazywaniu argumentów do tejże metody. Próbowałem już kilku rzeczy, ale nic właściwego nie przychodzi mi do głowy. Z góry dziękuję za pomoc |
|
SeaMonster131 |
» 2014-06-21 12:21:49 Obstawiam, że po ustawieniu rysowania na bitmapie bufor , nie zmieniasz ustawienia rysowania z powrotem na "backbuffer". |
|
Loodwin Temat założony przez niniejszego użytkownika |
» 2014-06-21 12:28:37 W pętli głównej później zmieniam: while( !al_key_down( & key_state, ALLEGRO_KEY_ESCAPE ) ) { al_get_keyboard_state( & key_state ); al_get_mouse_state( & mouse_state ); al_set_target_bitmap( bufor ); al_clear_to_color( al_map_rgb( 255, 255, 255 ) ); statek.move( mouse_state.x, mouse_state.y ); statek.draw( bufor ); al_set_target_backbuffer( display ); al_flip_display(); }
Tylko właśnie nie do końca rozumiem jak to zrobić bo ostatnio dopiero się uczę Allegro 5. |
|
Loodwin Temat założony przez niniejszego użytkownika |
» 2014-06-21 12:35:39 Dobra znalazłem gdzie jest błąd tylko nie wiem jak go rozwiązać. Okazuje się, że jest on w samym wywołaniu funkcji: al_draw_bitmap( graphic, x, y, 0 );
|
|
SeaMonster131 |
» 2014-06-21 12:47:24 To może inaczej - w jakim celu w ogóle tworzysz dodatkową bitmapę bufor (Allegro5 ma "wbudowane" podwójne buforowanie)? |
|
Loodwin Temat założony przez niniejszego użytkownika |
» 2014-06-21 12:55:11 Właśnie tego się obawiałem. Cały czas wiedziałem, że tutaj jest coś na rzeczy. Mam nadzieję, że teraz łatwo to pójdzie. Tylko teraz mam pytanie: Czy w metodzie rysującej jako argument mam podać teraz ekran czyli tak: ALLEGRO_DISPLAY * display i później wywołując ją tak samo jak wcześniej tylko zamiast bufora podawać ekran? Bo tak zrobiłem przed chwilą i jakoś nie chce za bardzo działać. |
|
SeaMonster131 |
» 2014-06-21 13:15:16 Za dużo kombinujesz. Wystarczy tak: al_clear_to_color()
al_draw_bitmap()
al_flip_display()
|
|
Loodwin Temat założony przez niniejszego użytkownika |
» 2014-06-21 13:19:06 No dobrze, ale jeśli chcę wywoływać al_draw_bitmap() w metodzie klasy. Teraz bardziej chodzi mi o to jak wyświetlić grafikę obiektu na ekran. Bo jeśli sam ekran został stworzony w funkcji main to jak odwołać się do niego w metodzie? |
|
« 1 » 2 |