Freetexture und Freeentity reichen wohl nicht... [erledigt]

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

onkelz89

Betreff: Freetexture und Freeentity reichen wohl nicht... [erledigt]

BeitragSo, Dez 16, 2007 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

habe ein Problem...

Ich erstelle bestimmt Objekte sehr oft. Außerdem werden die Objekte auch genau so oft gelöscht und bekommen genau so oft eine neue Texture.

Soweit geht auch alles. Die Grobe Reihenfolge:

- Wert ändert sich
- Alle Texturen löschen (FreeTexture)
- Alle Objekte löschen (FreeEntity)
- Type an sich löschen Delete bla.bla
- Neue Texture erstellen
- Neuen Type erstellen
- Neues Objekte mit neuer Textur überziehen

So, nun geht allerdings mein Speicher ewig hoch und immer höher und irgendwann Ruckelparty...

Wenn ich nun die Texture nur einmal am Start erstelle und nicht ändere (Was ich aber muss) dann bleibt der Speicher leicht schwankend aber im Normalbereich...

Also müsste man die Texturen die auf den einzelnen Objekten sind auch löschen können, weil Zitat aus der Hilfe Zitat:
Freeing a texture means you will not be able to use it again; however, entities already textured with it will not lose the texture.


Aber die sollte doch nach dem löschen des Objektes eigentlich mit gelöscht werden... Naja geht wohl so nicht


Hoffe Ihr habt ne Idee

Danke im Vorraus


MfG Onkelz
  • Zuletzt bearbeitet von onkelz89 am So, Dez 16, 2007 21:11, insgesamt einmal bearbeitet

NightPhoenix

BeitragSo, Dez 16, 2007 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Jup kenne das Problem und auch eine Lösung Wink

Du musst dem Objekt, welches mit der Textur belegt ist, die du löschen willst, eine andere textur zuweisen. Eher wird Blitz die textur nicht löschen, da sie ja noch für das Objekt benötigt wird.

Am besten du benutzt die kleinstmögliche Textur so für Zwischendurch zum löschen...
Code: [AUSKLAPPEN]
Zwischen_Tex=CreateTexture(1,1)
(1x1 Pixel)

Die ziehst du dann zuerst übers Objekt und löscht die Textur, die du schon löschen wolltest. Die Zwischentextur kannst du ruhig immer im Speicher behalten, die is ja eh nicht groß Wink
Also erst alle Objekte die mit der zu löschenden Textur belegt sind mit einer Anderen belegen und dann die gewünschte Textur löschen.

MfG.
 

onkelz89

BeitragSo, Dez 16, 2007 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, geht leider nicht. Ich meine zwar das es langsamer ansteigt jetzt aber das ist auch alles...

Noch vielleicht wichtig:

es handelt sich um sprites und die texture hat 20 frames...

NightPhoenix

BeitragSo, Dez 16, 2007 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
arbeitest du mit loadsprite oder mit createsprite?
Hast du auch wirklich alle Objekte, die mit der Textur belegt waren, erst mit der Zwischentextur belegt? Bei mir hats bis jetzt immer funktioniert, allerdings hab ich das noch nie mit sprites probiert
 

Marek

BeitragSo, Dez 16, 2007 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
- Type an sich löschen Delete bla.bla

Hm, Delete bla.bla? *Nachdenk*

Code: [AUSKLAPPEN]
Type bla
     Field x
End Type
a.bla=New bla

Delete a ;<==


So wohl eher... oder irre ich mich? oO

MfG Marek
Wer lesen kann ist klar im Vorteil...
 

onkelz89

BeitragSo, Dez 16, 2007 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, es geht nun ich habs anders gelöst .. war weil ich was doppelt gemoppelt hatte Razz

Ehm ja dein Vorschlag war super und Ja... normalerweise geht es auch nur wenn man (wie ich) so dumm ist und in ner anderen Schleife immer und immer mehr von der gleichen Sorte Types läd dann darf man sich nicht wundern Embarassed

Danke für die Hilfe

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group