14.05.2017, 19:18
0
VSync kann man nicht "falsch implementieren".
Von Programmseite her ist das nur ein ein Zustand, den man auf "an" oder "aus" setzen kann.
Von Hardwareseite ist es lediglich ein:
Wenn Bild fertig berechnet ist und falls VSync auf an steht: Lege Zwangspause ein, bis der Monitor seinen aktuellen Zyklus fertig hat.
Problematisch sind nur die Implikationen/Seiteneffekte, die das mit sich bringt.
Wie beschrieben: Wenn dein Monitor 60Hz hat, dein Spiel aber sagen wir etwa 1.1/60s braucht, um ein Bild zu berechnen, dann fährst du zwangsweise mit 2/60s = 30Hz (bzw. FPS) und eben nicht mit 54,54FPS.
Wenn das Spiel Eingaben seriell verarbeitet, hast du zwangsweise nun ein Input lag von 2/60s. Mit nem Buffer erhöht sich das dann noch mal auf 3/60s oder 4/60s (= 15Hz).
Und das kann halt sehr stark merkbar (aber nicht in dem Sinne "sehbar") sein.
Da kann aber weder das Spiel noch die GPU was dran machen.
Die Idee von IoC zum Monitor hin ist hier ist ansich ziemlich gut.
Damit hättest du dann im obigen Beispiel bis zu 54,54Hz, falls der Monitor entsprechend synchronisieren kann, anstatt die 30Hz, die du hast, wenn du dich stur an an fixes Monitortiming orientierst.
Von Programmseite her ist das nur ein ein Zustand, den man auf "an" oder "aus" setzen kann.
Von Hardwareseite ist es lediglich ein:
Wenn Bild fertig berechnet ist und falls VSync auf an steht: Lege Zwangspause ein, bis der Monitor seinen aktuellen Zyklus fertig hat.
Problematisch sind nur die Implikationen/Seiteneffekte, die das mit sich bringt.
Wie beschrieben: Wenn dein Monitor 60Hz hat, dein Spiel aber sagen wir etwa 1.1/60s braucht, um ein Bild zu berechnen, dann fährst du zwangsweise mit 2/60s = 30Hz (bzw. FPS) und eben nicht mit 54,54FPS.
Wenn das Spiel Eingaben seriell verarbeitet, hast du zwangsweise nun ein Input lag von 2/60s. Mit nem Buffer erhöht sich das dann noch mal auf 3/60s oder 4/60s (= 15Hz).
Und das kann halt sehr stark merkbar (aber nicht in dem Sinne "sehbar") sein.
Da kann aber weder das Spiel noch die GPU was dran machen.
Die Idee von IoC zum Monitor hin ist hier ist ansich ziemlich gut.
Damit hättest du dann im obigen Beispiel bis zu 54,54Hz, falls der Monitor entsprechend synchronisieren kann, anstatt die 30Hz, die du hast, wenn du dich stur an an fixes Monitortiming orientierst.