Tripple Buffering oder Dreifachpufferung?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Normalerweise wird bei Grafik "double buffering" eingesetzt. Es gibt einen so genannten Front- und einen Backbuffer. Das sind Bereiche im Grafikspeicher, in denen Bildinformation liegt.

  • Im Frontbuffer befindet sich das Bild, das gerade auf dem Monitor dargestellt wird.
  • Während dieses Bild angezeigt wird, berechnet der Grafikprozessor das nächste Bild und schreibt es in den Backbuffer.
  • Danach werden Front- und Backbuffer vertauscht, sodass das gerade berechnete Bild nun angezeigt wird.
  • Der Grafikprozessor berechnet das nächste Bild und schreibt es in den Backbuffer.
  • Und so weiter und so fort.


Das Problem beim "double buffering" ist, dass der Grafikprozessor, nachdem er ein Bild in den "back buffer" gezeichnet hat, warten muss, bis die Puffer getauscht wurden, bevor er weiterrechnen kann. Das ist erforderlich, um zu vermeiden, dass eine "unfertige Szene" im Backbuffer steht und beim nächsten Vertauschen im Frontbuffer landet und dargestellt wird.

Beim "Triple Buffering" werden drei Puffer verwendet, ein Front- und zwei Backbuffer. Der Grafikprozessor kann somit immer abwechselnd in einen der beiden Backbuffer "zeichnen" und wenn der nächste "Swap" ansteht, wird derjenige Backbuffer zum neuen Frontbuffer (und somit dargestellt), in den gerade nicht "gezeichnet" wird. Dieser enthält immer das neueste "fertig berechnete" Bild.

Vorteil ist, dass der Grafikprozessor besser ausgelastet wird, weil er weniger warten muss und somit oftmals eine höhere Bildrate und somit flüssigere Darstellung erzielt wird. Nachteil ist, dass die Latenz (Zeit, bis das berechnete Bild tatsächlich dargestellt wird) geringfügig ansteigt. Bei Echtzeitanwendungen (schnellen Computerspielen, z. B. "First-Person-Shootern") ist die Latenz oft wichtig.

Ich würde die Option aktivieren und ausprobieren, ob Du einen Nachteil bezüglich der Latenz in schnellen Computerspielen bemerkst. Wenn nicht, würde ich sie aktiv lassen. Du solltest mit aktivem "Triple Buffering" eine flüssigere Darstellung (höhere Framerate) erzielen.

Rattatu 
Fragesteller
 26.07.2016, 15:19

ok ich sehe du kennst dich aus :)

deshalb hab ich noch eine kurze Frage: Wenn man die Funktion "Adaptive VSync" aktiviert, löst das gleichzeitig das Problem mit Tearing und Input Lags oder müsse man bei einen 60hz Monitor (im Falle die GPU generiert mehr als 60FPS) einen FPS Miniter verwenden um die Probleme zu lösen?

1
NoHumanBeing  26.07.2016, 15:29
@Rattatu

Nein.

"Adaptive V-Sync" macht einfach nur automatisch den VSync an, wenn die GPU "wenig zu tun hat" (weil es dann nicht so schlimm ist, wenn sie öfter mal "warten muss", durch den VSync aber Tearing - also die Darstellung eines "unfertigen Frames" - verhindert wird) und aus, wenn die GPU "viel zu tun hat" (damit sie dann mehr Leistung erbringen kann).

Wenn "Triple Buffering" aktiv ist, hast Du immer die maximale Leistung (wie ohne V-Sync) und gleichzeitig kein Tearing (wie mit V-Sync). Das "erkaufst" Du Dir mit einer geringfügig höheren Latenz.

Wenn Du "adaptive V-Sync" aktivierst, hast Du entweder die maximale Leistung (wenn Deine GPU "am Limit läuft") oder kein Tearing (wenn Deine GPU "sich ohnehin langweilt"), aber nicht beides gleichzeitig. Dafür ist die Latenz etwas geringer, als mit aktivem "Triple Buffering".

Ich persönlich würde erst einmal "adaptive V-Sync" deaktivieren, den "normalen" V-Sync aktivieren und Triple-Buffering aktivieren. Das wäre grundsätzlich mal mein "Default". Und dann kannst Du ja mal vergleichen, ob Du wesentlich "besser" wirst, wenn Du V-Sync und Triple-Buffering ausmachst. (Dann ist die Latenz minimal, Du bekommst aber Tearing.) Wenn Du keinen Unterschied merkst, lasse V-Sync und Triple-Buffering an. Wenn Du einen Unterschied merkst, dann musst Du rumprobieren, mit welcher Einstellung Du am besten spielen kannst. Da kann man dann nichts pauschales mehr sagen. Das kommt dann letztlich alles auf Deine Präferenzen und auf die Spiele und auf die Leistungsfähigkeit Deiner Hardware an. Die geringste Latenz solltest Du ohne "Triple Buffering" und ohne V-Sync bekommen, aber dann ist die Darstellung eben wahrscheinlich nicht optimal. Wie sehr das "stört", musst Du dann selbst beurteilen.

2
Rattatu 
Fragesteller
 26.07.2016, 16:25
@NoHumanBeing

Ich werde mir eine GTX 1070 und den i5 6600k kaufen. Die beiden sind grundsätzlich zusammen eine seht strake Hardware. Wäre es hier ebenfalls sinnvoll "adaptive VSync" deaktivieren und "Tripple Buffering" sowie Ingame "VSync" zu aktivieren? 

Ps: 60hz Monitor

1
NoHumanBeing  26.07.2016, 17:00
@Rattatu

Welche Auflösung?

Falls "nur" FullHD (1920x1080), dann mit der Karte auf jeden Fall "adaptive VSync" aus und "Triple Buffering" und "VSync" an!

Bei 2k oder gar 4k --> ausprobieren.

1
Rattatu 
Fragesteller
 26.07.2016, 17:10
@Rattatu

Also abschließend: 

60hz  WQ HD Monitor, GTX 1070, i5 6600k...

Um Tearing und Input Lags zu beheben wäre es in Games bei einer Auflösung von 2560x1440p sinnvoll "adaptive VSync" deaktivieren und "Tripple Buffering" sowie "VSync" Ingame zu aktivieren. Grundsätzlich wäre es hierbei am Besten auf konstanten 60FPS zu bleiben oder? 

Was wäre dein Lösungvorschlag wenn die FPS unter 60hz kommen? Ebenfalls wieder in WQ HD...

1
NoHumanBeing  26.07.2016, 20:42
@Rattatu

Wenn Du die Framerate pushen willst, ohne Details herunterzuschrauben oder ähnliches, dann Triple Buffering und VSync aus und mit Tearing "leben".

Allgemein gibt es ja aber sehr viele Stellschrauben. AF (am besten "hochziehen" - zieht meiner Erfahrung nach nicht viel Leistung), AA (das kann man eventuell reduzieren/deaktivieren, das ändert in der Regel sehr viel).

Es gibt auch verschiedene Typen von AA, nämlich MSAA (multisample antialiasing) und SSAA (supersample antialiasing). Letzteres zieht sehr viel mehr Leistung, als ersteres, ist aber optisch noch besser, weil es nicht nur die Kanten der Vertices (Geometrie) "oversampled", sondern auch die Texel (Texturen).

Es gibt unzählig viele Stellschrauben. Was ich gesagt habe, war nur eine grobe "Richtschnur". Wie viel Zeit Du da investieren möchtest, um es zu optimieren (ist ja auch bei jedem Game anders), musst Du wissen.

0
Driver67  30.07.2016, 19:31
@NoHumanBeing

Hey NoHumanBeing... Zum ersten Absatz deines 3 Textes nochmal... 

Ich dachte wenn ich meine FPS pushen (maximals 60 FPS auf 60hz Monitor) will soll ich Tripple Buffering und VSync aktiveren und nicht deaktiviert lassen...

1
NoHumanBeing  30.07.2016, 20:55
@Driver67

Für maximale Leistung (FPS) entweder Triple-Buffering und VSync beides an oder beides aus.

Beides an bringt Dir bessere Darstellung (kein Tearing), hat dafür aber eine etwas höhere Latenz (Zeit, bis das berechnete Frame tatsächlich dargestellt wird), als beides aus.

Wenn Du nur VSync aktivierst (ohne Triple-Buffering), wirst Du (wie bei "beides an") ebenfalls kein Tearing haben, allerdings wird die Leistung (FPS) etwas geringer ausfallen, dafür aber die Latenz geringer sein.

Alles nicht so einfach. ;-)

Also grob Tabelle:

beides aus / Leistung maximal / Latenz gering / Tearing
nur VSync / Leistung verringert / Latenz gering / kein Tearing
beides an / Leistung maximal / Latenz erhöht / kein Tearing

1
NoHumanBeing  30.07.2016, 20:59
@NoHumanBeing

Oder anders ausgedrückt: Nur VSync verhindert Tearing auf Kosten der Framerate (was Du eher bemerken wirst). VSync + Triple-Buffering hingegen verhindert Tearing auf Kosten der Latenz (was Du vermutlich nicht/kaum bemerken wirst).

1
Driver67  30.07.2016, 23:11
@NoHumanBeing

Also ich habe einen 60hz Monitor. Meine zukünftige Hardware (kommt erst in ein paar Tagen) ist relativ stark (ich habe eine GTX 1070 und i5 6600k).

Wenn ich zB. nur VSync aktiviere, habe ich auf meinen Monitor manchmal schon die 60FPS ohne Tripple Buffering bereits aktiviert zu haben. Nur leider wird sie (die Hardware) die 60FPS wahrscheinlich nicht immer halten können und manchmal auch Drops auf sagen wir mal 40-50FPS legen.

1.Wäre es hier Sinnvoll Tripple Buffering (VSync on) zu aktivieren um die Drops abzufangen und ständig mit 60FPS zu spielen (funktioniert das so)?  

2. Angenommen es gibt keine FPS Drops und die bleiben konstant auf 60FPS... wäre es auch sinnvoll trotzdem Tripple Buffering zu aktivieren? (Nebenbei, die Latenz ist mir ziemlich egal da ich sowieso meist nur Open World Games spiele und nur selten First Person Shooter und selbst da sind die mir fast egal...)

3. Wenn ich Tripple Buffering aktiviere inklusive VSync sind da Temperatur Unterschiede zu merken im Gegensatz zu VSync und Doppelpufferung?

4. Oder liege ich mit meinen Annahmen komplett falsch und Tripple Buffering bringt weniger FPS als Doppelpufferung und nebenbei auch noch höhere Temperaturen? 


Ich habe wirklich keine Ahnung aber es scheint als könntest du mir helfen NoHumanBeing :)

1
GuteAntwort2021  22.09.2022, 23:11
Wenn "Triple Buffering" aktiv ist, hast Du immer die maximale Leistung (wie ohne V-Sync) und gleichzeitigkein Tearing (wie mit V-Sync). Das "erkaufst" Du Dir mit einer geringfügig höheren Latenz.

Was heißt denn "geringfügig höheren Latenz"? Mit wie viel muss man da ungefähr rechnen?

1
GuteAntwort2021  23.09.2022, 03:25
@NoHumanBeing

Und bei 144 Hz entsprechend ~7 ms?

Und maximal heißt es kann also auch gar kein Lag verursachen (oder zumindest weniger)?

Ach ja, ich hatte auf Wikipedia gelesen, dass Tripple Buffering ohne Vsync Ressourcenverschwendung ist. Stimmt das?

1