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

21

04.08.2014, 16:26

Ok danke versuche mich mal erneut daran :rolleyes:

22

09.08.2014, 20:54

Ich habe es hinbekommen :thumbsup:
Doch eine Frage habe ich noch. Ich habe eine Klasse Namens "Tile" und eine Klasse namens "Map". In der Klasse "Map" ist eine std::list aus Tile objekten.
Jedes Tile Objekt besitzt ein RectangleShape mit einer Texture die Static ist. Und jedes Tile Objekt hat die Funktionen: Update, Handle, Render was die Funktionen machen erkennt man am Namen (Handle = Handlet die Events). Wenn ich dann ein Tile highlighten will, lägt es dan ganz schön. Denn immer hin wenn man auf der Breite: 60 Tiles haben will und auf der
Höhe: 50 dann sind dass immer hin (60*50) = 3000 Tile Objekte die gerendert, geupdatet, und gehandelt werden müssen.

Meine Frage wie bekomme ich es besser hin das es nicht mehr so lagt ?

Ps: Das ist kein Fehler den ich ihm Code habe der das erzeugt (das laggen).

Mfg
Sceiwen

23

09.08.2014, 21:08

Da gibt es jetzt sehr, sehr viele Ansätze. Du könntest einen Texture-Atlas verwenden, du solltest dich mit SpriteBatching beschäftigen, du könntest Vertex- / Index-Buffer verwenden, oder du könntest einfach ein kleines, transparentes Overlay über das hervorzuhebende Tile legen. Google die Begriffe einfach mal.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

24

09.08.2014, 22:11

Weiterhin lagt SFML gern im Debugmodus. Verwende mal die Release Builds. Das bringt schon relativ viel. Ich geh einfach mal von SFML aus. Ansonsten musst du nicht alle Tiles rendern. Es ist ja immer nur ein Ausschnitt zu sehen. Render einfach nur den. Dazu einfach mal aufmalen wie das abläuft. Viele Tiles nebeneinander und darauf ein Ausschnitt.
„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.“

25

09.08.2014, 23:17

Danke, aber daran liegt es nicht. Ich glaube das es daran liegt das wenn X= 300, Y= 500 Tiles = 150000 Tiles Objekte sind das es dann ander std::list liegt denn immer hin muss sie alle diese Tile Obj 150000 Rendern, Updaten, und Handlen...

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Sceiwen« (09.08.2014, 23:57)


Swoerm

Alter Hase

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

26

10.08.2014, 00:06

Ja, aber wie gesagt ich nehme mal an das ein Tile größer als 1px ist und somit füllen die Tiles ja mehr als den auf deinem Bildschirm zur Verfügung stehenden Platz. Als prüfst du einfach bevor du ein Tile renderst, updatest... ob es überhaupt sichtbar ist und somit fallen ein Großteil der zu bearbeitenden Tiles weg. Ich empfehle dir außerdem mal deinen ganzen Code durchzugehen und jede Zeile die ausgeführt wird zu überdenken. Beispiel: Ich habe mir neulich eine GUI-Klasse geschrieben und hatte eigentlich konstant die von mir eingestellten maximalen 60 FPS. Doch irgendwann fiel mir auf das wenn ich ein Menü aufklappte dort die FPS auf 3 droppten. Ich vollzog den Code bis zu der stelle nach die ausgeführt wird wenn das Menü aufgeklappt wird und änderte dort eine extrem ineffiziente Zeile ab und von da an hatte ich überall meine 60 FPS.

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

27

10.08.2014, 05:25

Vorallem würde ich std::list ganz schnell zu std::vector ändern.
Aber clippen bringt auch schon sehr viel, wobei ich bei mir teilweise in meinem Editor auch in etwa die gleiche Anzahl habe + Skalierung meiner Textur und es läuft immer noch recht gut (Verwende aber QT statt SFML).

28

12.10.2014, 20:07

Hey,
nach langer Zeit habe ich mal wieder eine Frage zu diesem Thema.
Und zwar wie bekomme ich es hin das meine Tiles schräg sind ?
So wie in diesem Beispiel:


(Link)


Würde mich über eine Antwort freuen.

MfG
Sceiwen

29

12.10.2014, 20:36

Indem du sie schräg zeichnest. 8o

MfG
Check

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

30

12.10.2014, 20:39

WIP Website: kevinheese.de

Werbeanzeige