SFML - Sprite wird nicht angezeigt bzw. ist nur weiß!
-
thanks , i'll try it
-
Sumec99 schrieb:
[SFML - 2.1]
Ich hab das Problem dass ich eine sprite habe, der aber entweder garnicht angezeigt wird oder nur ein weißes rechteck
(Soll ich den Code Posten ?)wurde die Textur richtig geladen? Weiße Sprites werden bei mir nur gezeichnet wenn die Texture (z.B. aufgrund einer falschen Pfad-Angabe) nicht richtig geladen wird. Und wenn ein Sprite mit richtig geladener Textur gar nicht gezeichnet wird liegt es vielleicht daran, dass die Position im nicht sichtbaren Bereich liegt oder man vergessen hat dem RenderWindow mitzuteilen den Sprite zu zeichnen. Sind übliche Fehlerquellen
-
ne , /root/ hatte recht , wenn ich die Textur so deklariert hab :
Texture* tex = new Texture;
aber nie delete tex schreibe dann funktioniert alles perfekt
-
Sumec99 schrieb:
aber nie delete tex schreibe dann funktioniert alles perfekt
Nix funktioniert perfekt, du hast ein Memory Leak!
-
Der speicher wird doch bei programmende wieder freigegeben ??
und zur not kann man das ja auch noch im destruktor erdigt
-
Du hast überhaupt nicht verstanden was das Beispiel dir sagen wollte. Seufz.
-
Sumec99 schrieb:
Der speicher wird doch bei programmende wieder freigegeben ??
und zur not kann man das ja auch noch im destruktor erdigtDer Destruktor wird nie aufgerufen!
Ja, es stimmt schon das das OS mit new angeforderten Speicher wieder zurückgibt, aber der Destruktor von Texture wird trotzdem nicht aufgerufen.
-
Sumec99 schrieb:
Der speicher wird doch bei programmende wieder freigegeben ??
und zur not kann man das ja auch noch im destruktor erdigtAngeforderten Speicher sollte man, sobald man ihn nicht mehr benötigt, immer freigeben. Wenn man diese Regel missachtet kommt es zu Memory-Leaks. Bei kleinen Projekten vielleicht kein Problem, aber wenn es mal größer wird, bekommt man eine Reihe Probleme. Daher sollte uu jedem "new" Befehl auch das entsprechende "delete" irgendwo stehen. Die Ausnahme ist bei shared/unique-Pointern, die kümmern sich selbst um die Deallocation des angeforderten Speichers, sobald ihr Gültigkeitsbereich verlassen wird.
-
Tschuldigung , da habe ich zu wenig info gegeben ich meinte den destruktor
der klasse (animierter sprite) die die textur beinhaltet
sorry
-
"It is important to note that the sf::Sprite instance doesn't copy the texture that it uses, it only keeps a reference to it. Thus, a sf::Texture must not be destroyed while it is used by a sf::Sprite (i.e. never write a function that uses a local sf::Texture instance for creating a sprite)."
mfg
HarteWare