MAm problem:Mam f-ci na nacteni obrazku:
SDL_Surface *LoadImage(const char *filename, bool alpha)
{
SDL_Surface *tmp;// Pomocny
SDL_Surface *ret;// Bude vracen
if((tmp = IMG_Load(filename)) == NULL)// Prilinkovat SDL_image
{
fprintf(stderr, "%s\n", SDL_GetError());
return NULL;
}
if((ret = (alpha) ? SDL_DisplayFormatAlpha(tmp)
: SDL_DisplayFormat(tmp)) == NULL)
{
fprintf(stderr, "%s\n", SDL_GetError());
SDL_FreeSurface(tmp);
return NULL;
}
SDL_FreeSurface(tmp);// Uz neni potreba
return ret;
}
A funkci na vykresleni na urcitou pozici:
void DrawImage(SDL_Surface* zdroj, SDL_Surface* cil,int x,int y, bool obnov = true)
{
;
//Priprava pozice
SDL_Rect rect;
rect.x = (cil->w >> 1) - (zdroj->w >> 1);
rect.y = (cil->h >> 1) - (zdroj->h >> 1);
//Vykresleni
SDL_BlitSurface(zdroj, NULL, cil, &rect);
//Obnoveni
if(obnov == true)
SDL_UpdateRect(cil, NULL, NULL, NULL, NULL);
}
Vse jde zkompilovat,jenze pri spusteni mi VS vyhodi chybu(ale pokud to spoustim normalne pres pruzkumnika,tak to funguje jak ma,takze hodnota tam asi bude.....) ,ze nelze cist z adresy a ukaze mi radek rect.x = (cil->w >> 1) - (zdroj->w >> 1); Uz jsem zjistil,ze to dela ten argument,kteremu davam surface nacteny vyse uvedenou f-ci.Nebo pokud chci uzamknout surface nacteny pomoci te f-ce f-ci
//Zamknuti
bool Lock(SDL_Surface *surface)
{
if(SDL_MUSTLOCK(surface))
{
if(SDL_LockSurface(surface) < 0)
{
return false;
}
}
return true;
}
//Odemknuti
void Unlock(SDL_Surface *surface)
{
if(SDL_MUSTLOCK(surface))
{
SDL_UnlockSurface(surface);
}
}
,tak se to chova uplne stejne.
NEtusite v cem mam chybu?