Frage von zantes, 18

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

was ist eigentlich ein Buffer ? was tut er ? , was ist ein Swapbackbuffer was macht man damit?, ich programmiere mit DirectX Shader aber weis nicht genau wieso ich diese buffer benutze

C++

Danke im vorraus! Mfg

Antwort
von regex9, 8

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.

Kommentar von zantes ,

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!

Kommentar von regex9 ,

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. 😉

Kommentar von zantes ,

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

Mfg, vielen vielen dank nochmal !!

Keine passende Antwort gefunden?

Fragen Sie die Community