Ich frage mich nur, ob es möglich ist, DX11 oder DX9 nur für das Offscreen-Rendering zu initialisieren und zu verwenden - das heißt, ohne angeschlossenes Fenster. Ich beabsichtige, ein GPU-Benchmarking durchzuführen, bevor ich das eigentliche Fenster öffne. In diesem Benchmarking wird eine Testszene gerendert, sollte aber nicht sichtbar sein. (Tatsächlich werden je nach Benchmark-Score verschiedene Fenster geöffnet)
13
Antworten:
Ja. Sie können das Direct3D-Gerät mit initialisieren
D3D11CreateDevice
, für das kein Fenster erforderlich ist. Sie erstellen einfach überhaupt keine Swap-Kette. Sie können weiterhin Offscreen-Rendering-Ziele erstellen und auf die übliche Weise darauf zeichnen. AnstattPresent
die Swap-Kette anzurufen, können Sie anrufenID3D11DeviceContext::Flush
, um die GPU mit der Arbeit zu starten, die Sie in der Warteschlange angestellt haben.Wenn Sie später ein Fenster erstellen möchten, können Sie das Gerät zerstören und mit neu erstellen
D3D11CreateDeviceAndSwapChain
, oder Sie können eine Auslagerungskette erstellen und mit an das vorhandene Gerät anhängenIDXGIFactory::CreateSwapChain
. (DiesIDXGIFactory
ist ein separates COM-Objekt, mit demCreateDXGIFactory
zuerst erstellt werden muss.)quelle
Flush
Anstatt die Swap-Kette zu präsentieren, ist das ordentlich!IDirect3D9::CreateDevice
Methode möglich? Ich konnteD3D9CreateDevice
leider keine Methode finden .HWND
Erstellung ein erforderlich ist .