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

17.01.2011, 11:10

SFML langsames erstes rendern

Hallo
Ich habe ein so gut wie leeres Projekt, dass in einem kleinen Fenster nur
einen schwarzen hintergrund rendert.
Soweit schön und gut, allerdings dauert es bis zum ersten rendern ca 15 sekunden,
was ich für ein leeres Projekt äußerst lang finde.
Mit dem Debugger habe ich herausgefunden, dass es lange an der funktion Render() hängt.

Alles was ich beim rendern mache ist:

C-/C++-Quelltext

1
2
    void  Clear   () {App->Clear(sf::Color(0, 0, 0));}
    void  Flip  () {App->Display();}

Wobei App ein pointer auf mein Renderwindow ist.
Ich verwende VC++ 2008 Express und SFML 1.6.
Die libs sind Statisch gelinkt und ich kompiliere alles im Debug modus.
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

2

17.01.2011, 14:07

Im Debug modus kanns schon mal sein, dass es etwas dauert bis das Programm vollständig gestartet ist.
Versuch mal den Release.

lg chaia

3

17.01.2011, 14:23

ist halt nur nervig, da die Zeit weiterläuft und alles um 15 sekunden Springt, also muss ich immer im Pause modus starten.
Naja wird schon gehen
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

4

17.01.2011, 15:10

Gut, dass sollte es aber eigentlich nicht. Ich meinte, dass einfach das ganze Programm etwas länger braucht bis es zum ersten rendern kommt.
Wenn du nur clearst, woher weißt du dann, dass die Zeit wirklich weiter läuft? Am Anfang wird ja nur initialisiert, da ist es ja eigentlich "egal", wie lange das dauert, die eigentliche Hauptschleife sollte davon ja nicht beeinflusst werden.

lg chaia

5

17.01.2011, 15:52

also die hauptschleife wird einmal ausgeführt, allerdings ohne sichtbares Renderergebnis (fenster bleibt weiß)
wenn sie dann zum zweiten mal auf render trifft, hängt sie.
Das ist allerdings nur so wenn ich es aus der IDE heraus starte.
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

6

17.01.2011, 16:26

Zum einen sollte die Zeit vielleicht erst gezählt werden, wenn der erste Render-Vorgang abgeschlossen ist. Denn solange der Spieler nichts sieht, kann auch schlecht etwas tun ;).
Zum anderen startet ein Spiel meist ja ohnehin nicht unmittelbar. Es gibt ein Menü etc. und daher ist es nicht so schlimm, wenn das Programm zum Laden der Bilder und was weiß ich alles etwas länger braucht. Das Menü wird eben bedient, wenn es zu sehen ist...

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

7

17.01.2011, 18:24

15sekunden sind sehr lang. verwendest du etwa singletons?
ich vermute du lädst grafiken und sounds erst in der hauptschleife, startest aber vorher die stopuhr. schon überlegt einen ladebalken einzubauen oder in einem thread zu laden? an das menü beim start des spiels kommst du wohl nicht vorbei^^
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

17.01.2011, 18:44

15sekunden sind sehr lang. verwendest du etwa singletons?

OK... wo genau ist da jetzt der Zusammenhang?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

9

17.01.2011, 20:40

wird sein z.b. texturemanager erst beim erstellen des ersten sprites innerhalb der schleife zum ersten mal aufgerufen und initialisiert, werden alle texturen innerhalb der schleife geladen, was relativ lange dauern kann. ;) aber ist nur eine vermutung.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

17.01.2011, 20:54

Und wieso kann das nur mit Singletons der Fall sein? Oder andersrum, wieso sollten Singletons automatisch zu so einem Verhalten führen?
Ich verstehe ja Deinen Gedankengang, aber ein genereller Zusammenhang ist da meiner Meinung nach nicht vorhanden.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige