Ich habe ein DBObject, das media
(ein) und mediaTexture
(ein sf::Texture
) speichert. Das ist meine DBObject::loadMedia()
Funktion:Weißes Quadrat in SFML, aber Textur wird geladen
void DBObject::loadMedia() {
myStream mediaStream(mediaPath);
mediaTexture.loadFromStream(mediaStream);
media.setTexture(mediaTexture);
mediaInit = true;
}
Diese DBObjects in einem std::vector
gespeichert sind.
Wenn ich versuche, das Sprite auf das Display zu zeichnen, ist es komplett weiß, und anscheinend ist dies von der Textur außerhalb des Umfangs. Aber ich definiere die Textur im DBObject, also sollte es eine Lebensdauer des Objekts haben ... richtig?
Wenn ich jedoch ein neues Sprite in meiner main() -Funktion mache und newSprite.setTexture(DBObj.mediaTexture)
mache, wird es gut angezeigt, so dass die Textur selbst geladen wird, aber etwas passiert mit dem Sprite.
Was kann ich tun, um es zu ändern? Einfach das Sprite mit der Textur ständig aktualisieren? – TheAbelo2
Nein, nur beim Kopieren mit einem benutzerdefinierten Kopierkonstruktor. – Hiura
Danke, ich habe eine benutzerdefinierte Kopie hinzugefügt und jetzt funktioniert es gut. :) – TheAbelo2