[DirectX] Kleinen Backbuffer auf großen Frontbuffer hochrechnen
-
Hallo,
ich möchte bei einem kleinen Demo-Programm die Wirkung von Antialiasing demonstrieren. Das Programm soll über einen Beamer vorgeführt werden, und wenn ich mit der vollen Auflösung (1024*768) arbeite sieht man das nicht so gut.
Ich will deshalb auf einen Backbuffer der Größe 256*192 oder gar 128*96 rendern, und beim Aufruf von Present soll ein Pixel des Backbuffers auf 4 oder 16 Pixel des Frontbuffers kopiert werden. Dabei soll keinerlei Interpolation vorgenommen werden.
Was muss ich dabei einstellen, außer dass ich die Backbuffergröße entsprechend setze? Wie weiße ich DirectX an, keine Interpolation vorzunehmen?
Und kann ich die Backbuffergröße ganz einfach während der Laufzeit ändern oder muss ich dazu das Device neu erstellen?mfg. Tubos
PS: Nein, ich ändere nicht die Frontbufferauflösung weil der Beamer dann interpoliert. Die Frontbufferauflösung soll ständig auf 1024*768 sein.
-
Hallo,
ich würde es wie folgt machen:
Das ganze Bild zuerst in eine 256x256 Textur rendern (SetRenderTarget usw...)
Falls die Auflösung nicht genauso groß wie die Textur sein soll, mit SetViewport den Bereich einschränken.Anschließend 2 vortransformierte Polygone auf den Framebuffer rendern, und dabei die vorher erstellte Textur benutzen. Da musst Du dann eben die Texturkoordinaten so anpassen, dass das Bild wieder exakt auf den Bilschirm geht.
Wenn zwischen den Texeln nicht interpoliert werden soll, einfach den Linearfilter ausschalten (Standardmäßig ist der schon aus)
-
Danke für die schnelle Antwort!
Werde das ausprobieren und mich nochmals melden falls es Probleme gibt.
mfg. Tubos
-
Funktioniert gut und schnell! Super!
