[allegro]double buffering??

Odpowiedz Nowy wątek
2006-09-23 21:18

Rejestracja: 13 lat temu

Ostatnio: 12 lat temu

0

witam. z desperacji chcialem sie juz targnac na swoje zycie. kod jest obszerny, ale prosty-blagam o pomoc.

#include "allegro.h"
#include <time.h>

///////////////////////DEKLARACJE FUNKCJI I OBIEKTOW GLOBALNYCH/////////////////
void ustawienia_poczatkowe();
void ustawienia_koncowe();
bool laduj_kwadracik();
bool laduj_bufor();
void aktualny_czas();
void obieg_programu();
void rysuj_linie();
BITMAP* kwadracik = NULL;
BITMAP* bufor = NULL;
int zmienna = 0;
////////////////////////////////////////////////////////////////////////////////
int main()
{    
    ustawienia_poczatkowe();

    //dzielimy ekran
    rysuj_linie();

    //powolujemy do zycia bitmape kwadracik i tylni bufor
    laduj_kwadracik();
    laduj_bufor();

    //glowna czesc programu, wszystko bedzie sie wykonywalo co 10 milisekund
    LOCK_FUNCTION(obieg_programu);
    install_int(obieg_programu,10);

    //funkcja zatrzymujaca przed automatycznym zamknieciem sie programu
    readkey();
    ustawienia_koncowe();
    return 0;
}
END_OF_MAIN()
////////////////////FUNCKJE/////////////////////////////////////////////////////
void ustawienia_poczatkowe()
{
    allegro_init();
    set_gfx_mode(GFX_AUTODETECT_WINDOWED,680,600,0,0);
    set_color_depth(8);
    set_palette(default_palette);
    clear_to_color(screen,15);
    //clear_to_color(bufor,15);
    install_keyboard();
    text_mode(-1);
}   
//-----------------------------
void ustawienia_koncowe()
{
     allegro_exit();
}
//-----------------------------
bool laduj_kwadracik()
{
     kwadracik = load_bitmap("kwadracik.pcx", default_palette);
        if(!kwadracik)
        {
        set_gfx_mode(GFX_TEXT,0,0,0,0);
        allegro_message("Nie moge zaladowac pliku z obrazkiem !\n");
        allegro_exit();
        return 0;
        }
}
//------------------------------
bool laduj_bufor()
{
  if(!(bufor = create_bitmap(680,600)))
  {
    set_gfx_mode(GFX_TEXT,0,0,0,0);
    allegro_message("Zamalo pamieci potrzebnej do stworzenia bufora ekranu !\n");
    allegro_exit();
    return 0;
  }
}
//-----------------------------
void aktualny_czas()
{
    time_t T = 0;
    struct tm *lt = NULL;

    time(&T);
    lt = localtime(&T);

    textprintf(bufor,font,10,10,1,"%d-%02d-%02d %02d:%02d:%02d",
    lt->tm_year + 1900,
    lt->tm_mon + 1,
    lt->tm_mday,
    lt->tm_hour,
    lt->tm_min,
    lt->tm_sec);
}
//----------------------------
void rysuj_linie()
{
    //vline(bufor,298,0,600,makecol(1,1,1));
    //vline(bufor,299,0,600,makecol(1,1,1)); 
}
//-----------------------------
void obieg_programu() 
{
        rysuj_linie();

        zmienna++;
        clear_to_color(screen,15);
        //clear_to_color(bufor,15);
        masked_blit(kwadracik, bufor, 0,0,480,zmienna, kwadracik->w,kwadracik->h);
        aktualny_czas();
}
END_OF_FUNCTION(obieg_programu)

w miejscach oznaczonych komentarzem jest blad. wszystko jest w porzadku gdy zamiast bitmapy bufor uzyje po prostu screen. jesli komus bedzie sie chcialo przez to przebijac-chwala mu za to:D


Pozostało 580 znaków

2006-09-23 22:25

Rejestracja: 17 lat temu

Ostatnio: 8 lat temu

0

a co to za błąd?
pewnie coś jest nie tak z bufor = create_bitmap(680,600)


Piszę programy w językach: C, C++, Java, Python, Bash, PHP, SQL.
Przyjmuję zlecenia

Pozostało 580 znaków

2006-09-23 22:38

Rejestracja: 13 lat temu

Ostatnio: 12 lat temu

0

no wlasnie to jest ten najgorszy rodzaj bledu. wszytsko sie kompiluje, program startuje i sie zawiesza.tej funkcji uzywalem przedtem miliardy razy, ale faktycznie byc moze cos tutaj, bo na tej stworzonej bitmapie jak widac nie mozna w ogóle pracowac. nic narysowac, nawet wyczyscic. pfff..


Pozostało 580 znaków

2006-09-23 22:45

Rejestracja: 17 lat temu

Ostatnio: 8 lat temu

0
player napisał(a)

no wlasnie to jest ten najgorszy rodzaj bledu. wszytsko sie kompiluje, program startuje i sie zawiesza.tej funkcji uzywalem przedtem miliardy razy, ale faktycznie byc moze cos tutaj, bo na tej stworzonej bitmapie jak widac nie mozna w ogóle pracowac. nic narysowac, nawet wyczyscic. pfff..

to moze poszukaj o co mu chodzi? masz debuger


Piszę programy w językach: C, C++, Java, Python, Bash, PHP, SQL.
Przyjmuję zlecenia

Pozostało 580 znaków

2006-09-24 12:56

Rejestracja: 13 lat temu

Ostatnio: 12 lat temu

0

problem rozwiklany ;-) dzieki za pomoc.


Pozostało 580 znaków

Odpowiedz

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