Privacy Policy Cookie Policy Terms and Conditions Doppelpufferung - Wikipedia

Doppelpufferung

aus Wikipedia, der freien Enzyklopädie

Doppelpufferung (englisch double buffering) beschreibt ein Konzept in der Computergrafik, bei dem der Framebuffer, der auch Rahmenpuffer genannt wird, des Video-RAM bei Grafikkarten in zwei Bereiche unterteilt wird. Ziel des Verfahrens ist die Gewährleistung einer kontinuierlichen Bildfrequenz ohne Flackern.

Bevor Doppelpufferung eingeführt wurde, unterteilte man den Framebuffer nicht. Bildberechnung und Monitorausgabe fanden also parallel statt. Damit schwankte die Bildfrequenz je nach Szenenkomplexität und das Bild flackerte. Dies entsteht, wenn während der Ausgabe noch in den gleichen Framebuffer geschrieben wird.

Inhaltsverzeichnis

[Bearbeiten] Funktionsweise

Der Framebuffer des Grafikkartenspeichers wird in Front- und Backbuffer unterteilt. Während durch den RAMDAC der Frontbuffer ausgelesen und auf den Bildschirm dargestellt wird, berechnet die GPU im Backbuffer das nächstfolgende Bild. Nach Abschluss dieser Berechnung ist die Umsetzung des Swap-Befehls - das ist die Vertauschung der Speicheradressen von Front- und Backbuffer (Page Flip) - abhängig von VSync.

  • Bei deaktiviertem VSync wird der Tausch sofort vollzogen, unabhängig davon, wie weit der RAMDAC mit der Bilddarstellung aus dem Frontbuffer ist. Der Kathodenstrahl, der das Monitorbild erzeugt, beginnt aber nicht von vorn. Dieser fährt an der Stelle fort, wo er vor dem Puffertausch aufgehört hat. Das führt dazu, dass ein auf dem Monitor dargestelltes Bild zum Teil aus mehreren aufeinanderfolgenden Teilbildern zusammensetzt ist. Diesen Effekt nennt man Tearing.
  • Bei aktiviertem VSync wird mit dem Vertauschen solange gewartet, bis der RAMDAC die Darstellung des aktuellen Bildes aus dem Frontbuffer beendet hat. Dies wird mit dem VSync Signal angezeigt. In der Zwischenzeit kann keine neue Bildberechnung stattfinden, weil die Ergebnisse in keinem freien Puffer abgelegt werden können. Damit wird die Leistungsfähigkeit der Grafikkarte künstlich reduziert. Dieses Problem wird bei der Dreifachpufferung (triple buffering) durch Einführung eines weiteren Backbuffers kompensiert.

Nach Umsetzung des Swap-Befehls (dem Tausch von Front- und Backbuffer) beginnt der ganze Zyklus wieder von vorn.

[Bearbeiten] Vor- und Nachteile von Doppelpufferung

[Bearbeiten] Vorteile

  • flüssiger und ruckelfreier Bildaufbau

[Bearbeiten] Nachteile

  • deaktiviertes VSync führt besonders bei hoher Bildfrequenz zu Tearing
  • aktiviertes VSync führt zum Teil zu hohem Performanzverlust
  • doppelte Framebuffergröße gegenüber einfacher Pufferung
Andere Sprachen

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -