Mam funkci na vykresleni obrazku na urcite misto:
int DrawImage(sprite obr,SDL_Surface *cil , int x, int y, bool a = true)
{
SDL_Rect rec;
rec.x = x - obr.rec().x;
rec.y = y - obr.rec().y;
rec.h = 0;
rec.h = 0;
if(obr.get() == NULL)
chyba << "get vraaci null!";
else
chyba << "get() vraci dobre!";
SDL_BlitSurface(obr.get(), NULL, cil, &rec);
if(a == true)
SDL_UpdateRect(cil, rec.x, rec.y, rec.w, rec.h);
return 0;
}
//omlouvam se za tu neprehlednost, ale tu funkci jsem uz 8x prepisoval a zjednodusoval....
Mam strukturu sprite, ve ktere uchovavam surface a SDL_Rect, kde mam nekolik parametru(napriklad,kde je sred obrazku, atd...)
Surface ziskavam f-ci get() a ten obdelnik f-ci par()
Bohuzel, kdyz tuto f-ci pouziji, program mi spadne.Dokonce se ani jakoby nevykonalo telo programu...
EDIT:Jeste pridavam telo programu
//Globalni promenne
SDL_Surface *okno;
sprite sprit;
bool ProcessEvent()
{
SDL_Event event;
while(SDL_PollEvent(&event))
{
switch(event.type)
{
// Klavesnice
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
return false;
break;
default:
break;
}
break;
// Pozadavek na ukonceni
case SDL_QUIT:
return false;
break;
default:
break;
}
}
return true;
}
int main(int argc, char *argv[])
{
//Inicializace
if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
{
chyba << "Nepodařila se inicializace";
return false;
}
okno = SDL_SetVideoMode(800, 600, 32, SDL_SWSURFACE | SDL_FULLSCREEN);
//Priprava
LoadImage("flower.png", sprit, 10, 10);
if(sprit.get() == NULL)
chyba << "nevraci";
else
chyba << "vraci";
//Konec inicializace
bool done = false;
while(!done)
{
//DrawImage(sprit, okno, 20, 20);
done = !ProcessEvent();
}
// Deinicializace a konec
SDL_Quit();
return 0;
return 0;
}