Ich möchte den Inhalt meines vorderen oder hinteren Puffers mit DirectX 11 in einem Array von Bytes erfassen, das ich dann als Textur oder als Quelle für die Erstellung einer Datei verwenden kann. Ich habe ein Swap-Chain-Setup, viel Rendering passiert und den folgenden Code bis jetzt - den ich nach dem Aufruf von Present sicher anrufen werde.
%Vor%Es gibt mir immer schwarz mit null Alphas.
Ich hätte normalerweise die Möglichkeit, mit GDI interop BitBlt zu verwenden, um eine Bitmap aus der Swap-Kette zu kopieren - allerdings habe ich Einschränkungen, was bedeutet, dass dies keine gültige Lösung ist.
Auch die D3DX-Bibliothek, die Funktionalität für das Ausführen von Bits enthält, kommt ebenfalls nicht in Frage.
Swap-Kettenpuffer können einfach mit D3D11 gespeichert werden, wie unten gezeigt.
- Erstellen Sie ein Texture2D genauso wie der Backbuffer der Swap-Kette, den Sie speichern möchten
- Ruft CopyResource im Gerätekontext auf, um aus dem Back-Buffer in die neu erstellte Textur
zu kopieren- Rufen Sie D3DX11SaveTextureToFile (...) mit dem Dateinamen
auf
erfundenes Codefragment:
%Vor%Tags und Links c++ graphics directx directx-11