Mam problem. Robię od dosyć dawna mój pierwszy program w allegro. Ale odkąd dodałem podwójne buforowanie, i kilka zmian w moich klasach, program zaczął się sypać. Oto interesujący(dzięki ukochanemu debuggerowi :D) fragment:
BITMAP* Bufor = create_bitmap(SCREEN_W, SCREEN_H);
// ....
while(true)
{
clear_to_color(Bufor, makecol(TURQUOISE));
Back.Pokaz();
Off.Pokaz();
textout_ex(Bufor, font, "WYTEZ SWOJE SZCZESCIE GFX", 25, 10, makecol(BLACK), -1);
for(int X = 35, a = 0; a != 9; a++, X += 10)
textout_ex(Bufor, font, Kons[a].c_str(), 10, X, makecol(GOLD), -1);
if(!Bufor)exit(0);
if(!screen)exit(1);
blit(Bufor, screen, 0, 0, 0, 0, 256, 128); //Tu się sypie
if(Back.Zauktualizuj())return;
if(Off.Zauktualizuj())
{
allegro_exit();
exit(0);
}
Sleep(30);
}
Dlaczego może się coś takiego dziać?
Jedyne poza tym, co się dzieje z Bufor to:
class ButtonGraph
{
protected:
BITMAP **Bitmap;
BITMAP **NaCzym;
int X, Y, X2, Y2, Xmy, Ymy;
bool Klik;
public:
ButtonGraph()
{
X = Y = X2 = Y2 = Xmy = Ymy = Klik = 0;
Bitmap = NULL;
NaCzym = &screen;
}
// ....
void UstBit(BITMAP* Ab)
{
Bitmap = &Ab;
}
void Pokaz()
{
blit(*Bitmap, *NaCzym, 0, 0, X, Y, X2-X, Y2-Y);
}
void UstTlo(BITMAP* Tlo)
{
NaCzym = &Tlo;
}
// Nieważne części klasy
Skończyły mi sie juz pomysły:/ Czy ktos mogł by mi pomóc?