[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 poprostu 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: 16 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 wogole pracowac. nic narysowac, nawet wyczyscic. pfff..


Pozostało 580 znaków

2006-09-23 22:45

Rejestracja: 16 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 wogole 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