Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

12.11.2015, 16:02

C++ Ein Sprite/Texture/Image für alle Instanzen einer Klasse

Hallo Forum,

mal wieder eine Frage:
Ich programmiere mit SFML 2.1 (C++) und stehe momentan vor dem Problem, dass ich mir gedacht habe mal "schön" mit Vererbung zu programmieren.
Somit habe ich nun eine Basis-Klasse "Kartenelemente", die alle Variablen wie Position auf der Karte, Texture, Sprite... und Funktionen wie Rendern(), etc. beinhaltet.

Nun erbt beispielsweise die Klasse "Mühle" von "Kartenelemente" (Auch "Haus1", "Baum" etc. -> Alle Objekte auf der Karte erben...).
Wird im Spiel eine Mühle gebaut, so wird eine neue Instanz von "Mühle" erstellt.
Das Problem: Das Sprite/Texture der Mühle soll nur einmal existieren, da das ensprechende PNG sehr groß ist und beim erschaffen vieler Instanzen merklich das Einlesen des Bildes Zeit + Speicher raubt.

Was für Möglichkeiten gibt es, dass dieses Sprite/Texture nur einmal existiert?

Ps:
static sf::Sprite und static sf::Texture habe ich versucht, haut aber seltsamerweise nicht hin und ich bin mir auch nicht sicher, ob das ideal ist.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

12.11.2015, 16:31

Static ist da nicht besonders schön. Du könntest deine Texturen doch allesamt an einer Stelle lagern, eine Art Ressourcen Klasse, welche dann einzelne Texturen per Referenz oder Zeiger nach außen gibt. Deine Klassen wie "Mühle" haben dann somit nicht jeweils eine eigene Textur, sondern kennen einfach die jeweilige Textur.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

3

12.11.2015, 21:37

Das war einfach zu einfach um drauf zu kommen... :dash:

Vielen Dank Schorsch!
Funktioniert wunderbar. Schon setzen sich auch die großen Elemente ohne "Ruckeln", weil nichts mehr eingelesen werden muss. ;)


Werbeanzeige