SDL Spielchen wird locker 1Gb groß im Ram...
-
Ja offensichtlich geben wir unsere ressourcen nicht wieder frei die wir für SDL nutzen, aber wie geb ich die wieder frei?
das stand nirgends...
Unser SDL sieht schemenhaft so aus:
//Main SDL_Surface *images, *tmpimg; tmpimg = IMG_Load("img/images.png"); images = SDL_DisplayFormatAlpha(tmpimg); SDL_FreeSurface(tmpimg); sdl[0][4] = images; .... mehr bilder.... //rundenkern (Schleifenwiederholungen 50 wiederholungen in 1sec) ...berechnung... usw.... //Ausgabefunktion am ende des rundenkerns: SDL_BlitSurface(sdl[0][4], sdl[4][6], sdl[0][0], &dests); bilder werden nach dem Muster platziert. creeps, geschosse.. etc. alles halt. SDL_UpdateRect (sdl[0][0], 0, 0, 0, 0);
-
SDL_FreeSurface ( SDL_Surface * surface );
Hilft dir das?
Es ist außerdem nicht besonders sinvoll, jedes mal vor dem Zeichnen alle Bilder neu zu laden. Mach das einmal am Anfang, und speicher die Bilder bis du sie nicht mehr brauchst.
-
das tue ich^^
darum schreibe ich die geladenen bilder in einen multiarray (sdl[]) damit ich es in der funktion nur nunoch so nutze.aber das geht leider nicht.
sdl[0][0] ist die sdl_surface auf die alles geht.SDL_FreeSurface(sdl[0][0]); //SDL_FreeSurface(sdl[0][1]); SDL_UpdateRect (sdl[0][0], 0, 0, 0, 0);
so gehts leider nicht...
die auskommentierte zeile führt zum absturz. sdl[0][1] ist das hintergrundbild.