2012-03-28 5 views
0

Ich baue eine Anwendung, die ein Anaglyph (Stereobild) auf 200-Hz-Bildschirm basierend auf zwei bereitgestellten Bildern (NICHT 3D-Modell) zeichnet. Daher ist die Geschwindigkeit des Neuzeichnens sehr wichtig. Ich habe die besten Ergebnisse mit DirectDraw Oberflächen erzielt und ihre Flip() (zum sekundären einem aktuellen Oberfläche des Bild Schalt):DirectX - gibt es ein Analogon der DirectDraw-Oberfläche Flip()?

(void) lpddsPrimary->Flip(nullptr, DDFLIP_WAIT); 

Aber DirectDraw ist sehr veraltet und ich suche einen Weg, um diese Funktionalität neu zu implementieren, basierend auf moderne DirectX-Bibliotheken. Aber ich möchte wirklich kein Quad erstellen, ein Bild als Textur zeichnen, 3D-Projektionsmatrizen berechnen, nur um 2D-Bilder auszugeben.

Ich wäre wirklich dankbar für jeden Ausschnitt davon, wie dies möglicherweise mit DirectX getan werden kann. Danke im Voraus.

+0

Ich konnte nicht verstehen, warum Directdraw veraltet ist. Verwenden Sie direct3d für diesen Zweck selbst nur für die Funktionen, die es bietet, aber das Prinzip ist fast das gleiche ... – Ulterior

Antwort

1

Für Ihre Zwecke können Sie DXGI verwenden und D3D vollständig vermeiden. Sie sagen nicht, wie Sie die Daten in den Backbuffer bekommen, aber DXGI ermöglicht es Ihnen, eine Swapchain zu erstellen, sie zu spiegeln (Present) und auf die Oberflächen zuzugreifen (z. B. sie zu sperren - sie heißt jetzt Map). Für 3D benötigen Sie die "1" Versionen, z. DXGISwapChain1. Siehe http://msdn.microsoft.com/en-us/library/windows/desktop/bb205075(v=vs.85).aspx.

Beachten Sie, dass DXGISwapChain1 eine Unterklasse von DXGISwapChain ist und einige wichtige Methoden wie GetBuffer in der Basisschnittstelle sind.

+0

Danke! Aber was ist mit Kompatibilität? Das Programm muss auf WinXP-End-Computern ausgeführt werden. – khaos

+0

Dann können Sie keine modernen DirectX-Bibliotheken verwenden. –

+0

Also ich sehe, danke trotzdem. – khaos