|
Verfasser |
Nachricht |
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: C++ Bild anzeigen
Man muss ledeglich dem Zeiger ein neues Bild zuweißen und dass auch definieren...
Falsch... das Bild bleibt dann weiterhin im Arbeitsspeicher.
schau mal her:
Image *img = loadImage("BLAAAA.png");
if(img)
{
/* Bild erfolgreich geladen */
/* img wird zwar neu zugewiesen, das alte Bild bleibt aber trotzdem im RAM */
img = loadImage("BLAAAA2.png");
}
Dass einzige was hier geändert wurde, ist der Wert des Zeigers (img). Das alte Bild ist zwar jetzt an einer unbekannten Position im RAM (da der Zeiger nicht zwischengespeichert wurde), bleibt aber weiterhin bestehen.
Richtig wäre es so:
Image *img = loadImage("BLAAAA.png");
if(img)
{
/* Bild erfolgreich geladen */
/* Den Speicher, in dem die eigentliche Textur gespeichert ist freigeben */
free(img->data);
/* Die Image-Struktur (immerhin 20byte!) freigeben */
free(img);
/* Neues Bild laden und Zeiger neu zuweißen */
img = loadImage("BLAAAA2.png");
}
Jetzt ist der Speicher des alten Bildes freigegeben und kann von sysmem neu vergeben werden.
Alternativ kannst du auch freeImage benutzen, diese Funktion macht das Allerselbe
Dieser Beitrag wurde zuletzt bearbeitet: 20.04.2011 13:45 von HacKmaN.
|
|
20.04.2011 13:42 |
|
Folgende User bedanken sich: |
|
dx3m
Manta
Beiträge: 490
Gruppe: Developer
Registriert seit: Aug 2010
Status:
Abwesend
Danke erhalten: 643
|
RE: C++ Bild anzeigen
Wie lösche ich den einzelne Bilder aus dem Speicher.
Antwort von stehn
Mit clearImage(Color color, Image* image); kann man ein einzelnes Bild löschen
Also entweder kannst du nicht lesen oder was eher hinkommt du hast keine ahnung. Den du schreibst ja es löscht macht es aber definitif nicht^^
doch.. aber nur aus dem vram ;D
|
|
20.04.2011 16:36 |
|
Folgende User bedanken sich: |
|
~Hook~
C-Coder
Beiträge: 1.706
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 1129
|
RE: C++ Bild anzeigen
@HacKmaN Stimmt, wenn man dem zeiger ein neues bild zu weißt, bleibt das bild im RAM, im virtuellen speicher GLAUBE NICHT MEHR xD
<?php echo 'Signatur'; ?>
|
|
20.04.2011 19:24 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: C++ Bild anzeigen
@HacKmaN Stimmt, wenn man dem zeiger ein neues bild zu weißt, bleibt das bild im RAM, im virtuellen speicher GLAUBE NICHT MEHR xD
Hä? Virtueller Speicher? Falls du vram meinst, das steht für Video RAM ^^
Und seine Frage war ganz bestimmt die, wie man ein Bild aus dem RAM löscht... denn schon ein paar Bilder im RAM können die PSP zum Absturz bringen, es steht schließlich nicht viel RAM zur Verfügung
|
|
20.04.2011 19:32 |
|
|
|
~Hook~
C-Coder
Beiträge: 1.706
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 1129
|
RE: C++ Bild anzeigen
@HacKmaN Ich meine da wo das Bild virtuell geladen wird.....
<?php echo 'Signatur'; ?>
|
|
20.04.2011 19:37 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: C++ Bild anzeigen
@HacKmaN Ich meine da wo das Bild virtuell geladen wird.....
Was meinst du bitteschön mit "virtuell Geladen"? Es gibt auf der PSP keine virtuellen Adresse (wie sie üblich sind), wenn du dass meinst... bei der PSP entscheiden nur die ersten 12 Bits der Adresse auf welches Speichersegment zugegriffen werden soll (z.B. 1000 1000 0000 [0x880] für Kernel Partition 1), der Rest der Adresse gibt die Position im Segment an...
Dieser Beitrag wurde zuletzt bearbeitet: 20.04.2011 19:55 von HacKmaN.
|
|
20.04.2011 19:51 |
|
|
|
Ceikor
Ex-Developer
Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008
Status:
Abwesend
Danke erhalten: 701
|
RE: C++ Bild anzeigen
doch.. aber nur aus dem vram ;D
Toll es ist nicht mehr sichtbar -.- darum geht es aber nicht
Ihr wisst schon das ein Bild aus punkten besteht und diese werden mit der funktion die stehn geschriben hat nur alle mit einer Farbe gefüllt und somit belegen Sie weiter den Speicher -.-
So und wenn ich mir die grafics.h anschaue und lese
* Initialize all pixels of an image with a color.
sagt mir das eindeutig was da gemacht wird.
Dieser Beitrag wurde zuletzt bearbeitet: 21.04.2011 00:28 von Ceikor.
|
|
21.04.2011 00:26 |
|
|
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: C++ Bild anzeigen
Ich glaube das HackmaN das nun sehr gut erklärt hat das es mit:
if(img)
{
free(img->data);
free(img);
...........
oder mit der graphics.h/c mit:
freeImage(Image* image);
geht.
Also wäre die frage (falls er es überhaupt noch wissen will) damit beantwortet.
|
|
21.04.2011 00:37 |
|
|
|
|