Trotz Vsync keine fps Halbierung?

K

Konsolenhasser

Gast
Hi, ich wunder mich gerade etwas. Habe eben festgestellt, dass bei mir Vsync nicht mehr so arbeitet wie früher. Normalerweise wurden die fps immer halbiert, wenn die Graka nicht soviele fps schaffte wie die HZ-Zahl des Monitors. Hab nen TFT (60HZ), grade stell ich Vsync an, bei 60fps ist logischerweise immer noch die Obergrenze. Aber dann brechen die fps ein und halbieren sich nicht auf 30fps, nein sie bleiben auf dem Wert den die Graka auch schafft, zb 37fps oder 52fps. Woran kann das liegen? Triple Buffering ist aus, im Treiber und im Spiel, habe es auch mit mehreren Spielen probiert. Habe ne 8800GTS und den neusten Treiber. Könnte mal jemand probieren wie das bei ihm mit Vsync ist? Thx schonmal
 
Wieso sollten sich die "Frames" halbieren - habe ich was verpasst?

Die Framerate wird nur auf die Wiederholrate deines Monitors limitiert. Schafft deine Graka keine 60 Frames/sec zu liefern, werden einfach manche Frames doppelt dargestellt - also nix mit Halbierung. Ist mir Auch noch nie aufgefallen.

Ich könnte mir zwar vorstellen, dass man absichtlich 30fps generiert um dann genau jedes zweite frame doppelt darzustellen; um das eh kaum wahrnehmbare "Ruckeln" zu homogenisieren. Aber nee ich denke das ist normal das deine graka unter vsync das liefert was sie schafft ;)
 
An ist VSync wahrscheinlich schon, aber es muss dann noch lange nicht automatisch eine Halbierung der FPS vorhanden sein. Die FPS sind bei den meisten Spielen alles andere als konstant und so schaffen es dann z.B. 30 Frames innerhalb einer Sekunde rechtzeitig zum VBlank, die restlichen benötigen dann zwei VBlanks.

Bei 60 FPS hat man eine Verzögerung zwischen zwei VBlanks von 16,7ms. Die 30 Frames, die es geschafft haben unter 16,7ms Renderzeit zu bleiben werden daher in 500ms angezeigt. Die verbleibenden 500ms teilen sich die Frames, die zwei VBlanks benötigen. Daher können in diesen 500ms nur 15 Frames gerendert werden. Insgesamt ergibt sich dabei auf eine Sekunde gesehen eine Framerate von 45.
 
Mach mal VSYNC nicht nur im SPiel, sondern auch im Treiber an.
 
Naja, im Grunde ist jede (ungefähr ganzzahlige) Framerate von 1 fps bis zur Hz-Zahl des Monitors möglich. Nicht jeder Frame ist ja gleich schnell renderbar, wäre es so, könnten wir uns die Benchmarks sparen und jedes Spiel einen Frame rendern lassen und könnten ein Fazit ziehen.

Vsync macht ja nichts anderes, als den Wechsel auf den nächsten (sichtbaren) Framebuffer so zu verschieben, dass er nicht im Bildbau stattfindet...
 
@Mac_Fly

Danke - da lag ich ja mit der Vermutung einer "homogenisierten" Framerate nicht schlecht. Mir ist das allerdings nie aufgefallen da ich eh nur vsync aktiviere wenn das Tearing zu sehr nervt.
 
Es war schon immer so, dass sich bei Vsync die fps auf ganzzahlige Vielfachfache verringert, wenn die fps Anzahl die HZ-Anzahl des Monitors unterschreitet. Hab ich früher oft genug beobachtet.
Code:
Bildwiederholrate 	entsprechend mögliche fps:
60 Hz                 60, 30, 20, 15, 12, ... fps
75 Hz                 75, 38, 25, 19, 15, ... fps
85 Hz                 85, 42, 28, 21, 17, ... fps
100 Hz               100, 50, 33, 25, 20, ... fps
120 Hz               120, 60, 40, 30, 24, ... fps
Tatsächlich ereichbare Geschwindigkeiten mit VSync und Double Buffering

Kann man hier nachlesen: http://alt.3dcenter.org/artikel/2004/03-12_a.php Das kann doch net sein dass es bei mir anders ist.. Könnte das mal jemand bei sich überprüfen, wie es sich da verhält? Und triple buffering ist garantiert aus, im Treiber sowie im Spiel.
 
Sowohl 1668mib als auch ich haben dir die Erklärung gegeben, wieso auch mit VSync alle möglichen Framerates - bis maximal zur Bildwiederholrate des Monitors - erreicht werden können. Was passt dir an unserer Erklärung nicht?
 
Zurück
Oben