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

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

11

14.01.2019, 09:30

Zum testen einfach mal in die Mainloop ein Sleep(10) einbauen. Wenns damit besser geht, hast du Probleme nur zu kleiner Zeit. Typisches Problem kann sein: ein Wert wird irgendwo als Divisor benutzt und auf 0 abgerundet. Evtl. wird und dann irgendwo mit NaNs und irgendwelchen Exceptions weitergerechnet.

12

17.01.2019, 21:16

Nach ein bisschen suchen und lesen habe ich dann bei der Funktion SDL_CreateRenderer (); an der hintersten Stelle (zuständig für die Flags), das Flag SDL_RENDERER_PRESENTVSYNC eingetragen, das ja die V-Sync einschalten soll, was ja eigentlich der Name schon sagt :D
Ich habe auch das Beispiel mit dem _sleep(10); ausprobiert.
Seit dem läuft das Spiel auch in der Uhrform um einiges besser und so gut wie ruckelfrei. Gab allerdings trotzdem noch, wenn man ganz genau drauf achtet, miniruckler. Die aber so wohl kaum auffallen würden, wenn man es nicht weiß ^^
Hab das dann jetzt auch in mein erweitertes Spiel mit eingebaut (nur V-Sync). Auch wenn es dort schon besser lief.

Und wegen dem Tearing.
Ich habe 2 Speicherbereiche (bzw. die SDL gibt diese) wo dann immer im nicht benötigten Surface das Bild vorgerendert wird und immer zwischen den beiden Speicherbereichen hin und her gewechselt wird. Soweit ich weiß, sollte das doch Tearing verhindern, oder?
Im Buch wird das als Backpuffer bezeichnet.

Ich bedanke mich auf jedenfall schonmal für die ganzen Infos, die Ihr mir hier gegeben habt und noch geben werdet :D
Bin auch fleißig am Programmieren und üben, bzw. ausprobieren ^^

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

13

18.01.2019, 06:43

Soweit ich weiß, sollte das doch Tearing verhindern, oder?
Nein, unmöglich. Wenn du einen Flip der beiden Buffer machst, während das Bild gerade aufgebaut wird, siehst du einen Teil des alten Buffers, der schon gezeichnet wurde vor dem Flip und danach den Inhalt des alten. Folglich hast du Tearing. Das kannst du nur mit V-Sync in den Griff bekommen. Ohne Double-Buffer wäre es noch viel übler, da würde auch V-Sync nicht verhindern können, dass sich Inhalte während der Bildschirm-Darstellung ändern. Auch das wäre eine Art Tearing.
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