Laden...

SwapEffect.Discard richtig erklärt ???

Erstellt von SGT_BOB vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.250 Views
S
SGT_BOB Themenstarter:in
125 Beiträge seit 2005
vor 18 Jahren
SwapEffect.Discard richtig erklärt ???

Hallo Leute.

Ich kämpfe mich grade durch die DirectX9 Doku. Hab zu SwapEffect.Discard folgendes gefunden:
...
An application can use the Discard swap effect to avoid these overheads and to enable the display driver to choose the most efficient presentation technique for the swap chain.
...

Hab mir das jetzt folgendermaßen übersetzt (nur der fettgedruckte Text):

...ermöglicht dem Grafiktreiber automatisch die effizienteste Darstellungstechnik des Buffer-Wechsels auszuwählen. (naja sehr grob übersetzt 😄)

Kann mir evtl. kurz mal einer den Unterschied zwischen SwapEffect.Discard, SwapEffect.Copy und SwapEffect.Flip erklären. Komme in der Doku nicht weiter. 🙁

THX für eure Hilfe.

SGT_BOB

*************************
Ich bin root, ich darf das... 😜
root>_
*************************

1.373 Beiträge seit 2004
vor 18 Jahren

In der Regel hat man zwei Buffer. Einen Frontbuffer, der das enthält, was man auf dem Bildschirm sieht und einen Backbuffer, in dem eine Szene gerendert wird. Ist man mit dem Rendern fertig, muss dass Bild zum Frontbuffer gebracht werden. Da gibt es zwei Möglichkeiten:
a) Man kopiert den Inhalt des Backbuffers in einem Rutsch in den Frontbuffer. Das macht SwapEffect.Copy
b) Man sagt ganz einfach, dass der Backbuffer jetzt der Frontbuffer ist. Der Grafikkarte wird also gesagt, sie soll nicht mehr das anzeigen, was im (ehemaligen) Frontbuffer steht, sondern das, was im (ehemaligen) Backbuffer steht. Das mach SwapEffect.Flip.

Beide Methoden garantieren außerdem, dass der Inhalt der Backbuffer erhalten bleibt, was Performanceeinbußen nach sich ziehen kann.

Am besten ist man tatsächlich mit SwapEffect.Discard bedient. Der Treiber macht das Beste für dich, dafür garantiert er nicht, dass der Inhalt der Backbuffer gleich bleibt. Das macht allerdings nichts, da man eh nicht vom Backbuffer lesen sollte und den Buffer vor dem Rendern erst vollständig löscht (Clear())

MfG VizOne

S
SGT_BOB Themenstarter:in
125 Beiträge seit 2005
vor 18 Jahren

Hey danke für die super Erklärung. 👍
Also lag ich gar nicht so verkehrt. Dann werd ich mich mal weiter in Direct3D knien. 😁

1.000 THX...

SGT_BOB

*************************
Ich bin root, ich darf das... 😜
root>_
*************************