Was ist ein Buffer in der Grafik Programmierung C++?

...komplette Frage anzeigen

1 Antwort

Ein Buffer bietet ein temporäres Zwischenlager für Daten. Einmal ein sehr simples, abstraktes Beispiel in der Programmerung:

var buffer = 1 + 2;
print(buffer);
print(1 + 2);

Die erste Ausgabe könnte man sagen, ist gepuffert, denn der Wert wurde bereits berechnet und das Ergebnis steht im Speicher schon zur Verfügung. Bei der 2. Ausgabe muss dieser Wert erst berechnet werden.

In diesem Beispiel macht es keinen Unterschied. Beim Rendering kann das jedoch schon eine erhebliche Auswirkung haben. Eine Animation beispielsweise verläuft viel flüssiger, wenn ihre Werte berets im Voraus berechnet wurden. Erfolgen (Monitor-)Ausgabe und Bildberechnung  jedoch parallel, kommt es leicht zu Flackereffekten o.ä..

Mit einem Buffer kannst du Daten vorladen, bevor du sie verarbeitest.

Swap-Backbuffer

Ich denke mal, es geht dabei um den Page Flip bei der Doppelpufferung. An sich wird bei der Doppelpufferung der Framebuffer des Speicherbereichs der Grafikkarte in Back- und Frontbuffer unterteilt. Letzterer ist für die Bildschirmausgabe zuständig, ersterer berechnet Folgeframes. Wenn ein neuer Frame berechnet wurde, müssen diese Daten natürlich in den Frontbuffer gelangen. Also vertauscht man die Speicheradressen beider Buffer.

Antwort bewerten Vielen Dank für Deine Bewertung
zantes 05.11.2016, 17:05

Danke dir vielmals für die Hilfe !! aber wie kann ich mit den SwapBackBuffer vorstellen, also die Doppelpufferung ? ich versteh das noch nicht ganz.

Dennoch danke dir für die Hilfe!

0
regex9 05.11.2016, 19:31
@zantes

Wie meinst du das? Genau so:

An sich wird bei der Doppelpufferung der Framebuffer des Speicherbereichs der Grafikkarte in Back- und Frontbuffer unterteilt.

Vergleiche es mit der Jungtierfütterung bei Vögeln, wo beide Eltern Versorger sind. Während der Vater (Backpuffer) losfliegt, um Nahrung zu holen, füttert die Mutter (Frontbuffer) die Jungtiere. Wenn der Vater wiederkommt, wechseln sich Vater und Mutter gegenseitig ab. Der Vater füttert, die Mutter jagt. Würde es diese Zweiteilung nicht geben, würden die Jungtiere immer wieder Hungerphasen ausstehen müssen. 😉

1
zantes 06.11.2016, 02:57
@regex9

Wow vielen dank für deine ausführliche Hilfe, dank dir verstehe ich das jetzt ! :)) 

Mfg, vielen vielen dank nochmal !!

0

Was möchtest Du wissen?