IDXGISurface1::GetDC-Methode (dxgi.h)
Gibt einen Gerätekontext (Device Context, DC) zurück, mit dem Sie mithilfe der Windows-Grafikgeräteschnittstelle (GDI) auf einer DXGI-Oberfläche (Microsoft DirectX Graphics Infrastructure) rendern können.
Syntax
HRESULT GetDC(
BOOL Discard,
[out] HDC *phdc
);
Parameter
Discard
Typ: BOOL
Ein boolescher Wert, der angibt, ob Direct3D-Inhalte im GDI-DC beibehalten werden sollen. TRUE weist die Runtime an, Direct3D-Inhalte nicht im GDI-DC beizubehalten. Das heißt, die Runtime verwirft den Direct3D-Inhalt. FALSE garantiert, dass Direct3D-Inhalte im GDI DC verfügbar sind.
[out] phdc
Typ: HDC*
Ein Zeiger auf ein HDC-Handle , das den aktuellen Gerätekontext für das GDI-Rendering darstellt.
Rückgabewert
Typ: HRESULT
Gibt bei erfolgreicher Ausführung S_OK zurück. andernfalls ein Fehlercode.
Hinweise
Diese Methode wird von DXGI 1.0, das in Windows Vista und Windows Server 2008 ausgeliefert wurde, nicht unterstützt. DxGI 1.1-Unterstützung ist erforderlich, die unter Windows 7, Windows Server 2008 R2 und als Update auf Windows Vista mit Service Pack 2 (SP2) (KB 971644) und Windows Server 2008 (KB 971512) verfügbar ist.
Nachdem Sie die GetDC-Methode zum Abrufen eines DC verwendet haben, können Sie mithilfe von GDI auf der DXGI-Oberfläche rendern.
Die GetDC-Methode liest die Oberfläche für das GDI-Rendering und ermöglicht den Interbetrieb zwischen DXGI- und GDI-Technologien.
Beachten Sie folgendes, wenn Sie diese Methode verwenden:
- Sie müssen die Oberfläche mithilfe des D3D11_RESOURCE_MISC_GDI_COMPATIBLE-Flags für eine Oberfläche oder mit dem flag DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE für Swapchains erstellen, da andernfalls bei dieser Methode ein Fehler auftritt.
- Sie müssen das Gerät freigeben und die IDXGISurface1::ReleaseDC-Methode aufrufen, bevor Sie neue Direct3D-Befehle ausgeben.
- Diese Methode schlägt fehl, wenn bereits ein ausstehender DC von dieser Methode erstellt wurde.
- Das Format für die Oberfläche oder Swapchain muss DXGI_FORMAT_B8G8R8A8_UNORM_SRGB oder DXGI_FORMAT_B8G8R8A8_UNORM sein.
- Auf GetDC wird das Renderziel in der Ausgabezusammenführung der Direct3D-Pipeline von der Oberfläche getrennt. Sie müssen die ID3D11DeviceContext::OMSetRenderTargets-Methode auf dem Gerät vor dem Direct3D-Rendering nach dem GDI-Rendering aufrufen.
- Vor dem Ändern der Größe von Puffern müssen Sie alle ausstehenden DCs freigeben.
IDXGISwapChain* g_pSwapChain = NULL;
IDXGISurface1* g_pSurface1 = NULL;
...
//Setup the device and the swapchain
g_pSwapChain->GetBuffer(0, __uuidof(IDXGISurface1), (void**) &g_pSurface1);
g_pSurface1->GetDC( FALSE, &g_hDC );
...
//Draw on the DC using GDI
...
//When finish drawing release the DC
g_pSurface1->ReleaseDC( NULL );
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7 [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | dxgi.h |
Bibliothek | DXGI.lib |