Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

(allegro)Problem z buforem

Ostatnio zmodyfikowano 2010-03-02 16:38
Autor Wiadomość
Gronek8624
Temat założony przez niniejszego użytkownika
(allegro)Problem z buforem
» 2010-03-01 23:01:06
Problem polega na tym że postać sie nie pojawia a bufor sobie miga
Do tego wszystko co umieszczam na buforze to się wo gule nie pojawia :(
C/C++
#include <allegro.h>
int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT, 1024, 768, 0, 0 );
    clear_to_color( screen, makecol( 247, 156, 26 ) );
   
   
   
    BITMAP * bufor = NULL;
    BITMAP * ludek = NULL;
    BITMAP * obrazektla = NULL;
   
   
    bufor = create_bitmap( 1024, 117 );
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogę utworzyć bufora !" );
        allegro_exit();
        return 0;
    }
   
    ludek = load_bmp( "Parkurzysta.bmp", default_palette );
    if( !ludek )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka Gronka !" );
        allegro_exit();
        return 0;
    }
    obrazektla = load_bmp( "obrazektla.bmp", default_palette );
    if( !obrazektla )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka 1 !" );
        allegro_exit();
        return 0;
    }
   
   
    int ludek_x = 0, ludek_y = 594;
    while( !key[ KEY_ESC ] )
    {
        if( key[ KEY_LEFT ] ) ludek_x--;
       
        if( key[ KEY_RIGHT ] ) ludek_x++;
       
        if( key[ KEY_UP ] ) ludek_y--;
       
        if( key[ KEY_DOWN ] ) ludek_y++;
       
        clear_to_color( bufor, makecol( 255, 0, 255 ) );
        //rest(10);
        //clear_to_color(screen, makecol(0,0,0));
        rest( 1 );
       
        blit( bufor, screen, 0, 0, 0, 594, 1024, 594 );
        masked_blit( ludek, bufor, 0, 0, ludek_x, ludek_y, ludek->w, ludek->h );
        blit( obrazektla, screen, 0, 0, 0, 0, obrazektla->w, obrazektla->h );
    }
    destroy_bitmap( obrazektla );
    destroy_bitmap( bufor );
    destroy_bitmap( ludek );
    allegro_exit();
    return 0;
}
END_OF_MAIN();
Jak sądzę to coś przeoczyłem ale nie mogę tego znaleźć bardzo proszę o pomoc
P-14487
Bartaz
...
» 2010-03-01 23:13:41
Nie jestem pewien czy to cos da ale czemu kopiujesz obrazek tla na screen a nie na bufor?
i poco czyscisz na jakis tam kolor w petli ciagle screen?
P-14490
dmx81
» 2010-03-01 23:55:27
dokladnie, sprobuj nie czyscic ekranu, po drugie sprobuj robic tak:
czyscisz bufor na dany kolor, rysujesz wszytsko po kolei na bufor, na sam koniec rysujesz bufor na ekran-screen. no i wystarczy wtedy jeden raz rest, np po narysowaniu wszytskiego - oczywiscie to tylko sugestia, wyprobuj, moze pomoze - a bufor oczywiscie wielkosci takiej, jaka ma miec "koncowy" ekran czyli jesli chcesz miec 800x600, taki wlasnie zrobic bufor, na to widze masz jakis obrazek tla, a na to dalej inne rzeczy rysowac, tzn wszytsko na bufor, ale zobaczysz, ze kolejnosc rysowania tez ma znaczenie - sam dojdziesz, ktore elementy przykrywaja ktore.
P-14492
szyx_yankez
» 2010-03-02 06:50:43
C/C++
na sam koniec rysujesz bufor na ekran - screen.
Równie dobrze może bufor rysować na sam początek a wszystkie bitmapy które będą rysowane na buforze na końcu, nie ma to żadnego znaczenia, to tylko kwestia gustu, jednak te bitmapy które będą rysowane na buforze która którą będzie pokrywać zależy już od kolejności.



P-14495
Gronek8624
Temat założony przez niniejszego użytkownika
» 2010-03-02 16:38:42
Dziek wszystkim za pomoc :)
Temat zamknięty
P-14515
« 1 »
  Strona 1 z 1