 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
DarK Super JLI'ler

Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 04.08.2004, 03:50 Titel: [Sprite] Speicher freigeben |
|
|
hi,
ich habe eine Sprite Klasse mit Dekonstruktor e.t.c.
Bei meinem Game ist es nun folgendermaßen das er eine Map lädt
und das dazugehörige tileset (mehere Sprites)...
Im laufe des Spiels wechseln die Maps und die tilesets, das Problem
ist dabei das die alten tilesets b.z.w. Sprites im speicher bleibem, weil
nachem 3. Mapchange fängt das Game an zu laggen...
Code: |
sprite *tile;
....
tile = new sprite;
tile->create(parameter...);
....
tile->draw();
....
delete tile;
tile = NULL;
|
so müste er doch speicher resavieren, das sprite anlegen und den speicher wieder freigeben sowie den zeiger oder?
so gehts aber nicht
weiss einer eine Lösung oder kann mir sagen woran es sonst liegt?
es kann eigendlich nur daran liegen...
cya _________________ "Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."
"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."
"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun" |
|
Nach oben |
|
 |
PeaceKiller JLI Master

Alter: 36 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 04.08.2004, 10:02 Titel: |
|
|
Du gibts die Texturen nicht wieder frei (wenn sie nicht im Destruktor deiner Sprite Klasse freigegeben werden). _________________ »If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine |
|
Nach oben |
|
 |
DarK Super JLI'ler

Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 04.08.2004, 19:46 Titel: |
|
|
hi,
ich benutze SDL, dort kann man doch höchstens ein Surface mit SDL_FreeSurface() freigeben ...
das tu ich auch im Dekonstruktur, das Problem ist , es geht immer noch
net...
EDIT:
hier die Create Funktion:
Code: |
temp = SDL_LoadBMP(file_name);
if (temp == NULL) return 0;
image = SDL_DisplayFormat(temp);
if (image == NULL) return 0;
SDL_FreeSurface(temp);
width = image->w;
height = image->h;
colorkey = SDL_MapRGB(screen->format, r, g, b);
SDL_SetColorKey(image, SDL_SRCCOLORKEY | SDL_RLEACCEL, colorkey);
|
ich glaube es liegt an SDL_DisplayFormat(), diese Funktion
resaviert andauernt Speicher und diesen mit SDL_FreeSurface im
Dekonstruktur freizugeben in dem ich das mit Image mache, funz
net _________________ "Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."
"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."
"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun" |
|
Nach oben |
|
 |
DarK Super JLI'ler

Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 05.08.2004, 12:49 Titel: |
|
|
Problem gelöst, danke für die viele Hilfe  _________________ "Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."
"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."
"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun" |
|
Nach oben |
|
 |
C++Builder Senior JLI'ler

Anmeldedatum: 04.10.2003 Beiträge: 235
Medaillen: Keine
|
Verfasst am: 08.08.2004, 12:00 Titel: |
|
|
Wie hast du das gelöst wenn ich fragen darf?
(ich benutz auch SDL aber nicht DisplayFormat) |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|