IDXGISurface1 ::GetDC, méthode (dxgi.h)
Retourne un contexte d’appareil qui vous permet d’effectuer un rendu sur une surface DXGI (Microsoft DirectX Graphics Infrastructure) à l’aide de l’interface GDI (Windows Graphics Device Interface).
Syntaxe
HRESULT GetDC(
BOOL Discard,
[out] HDC *phdc
);
Paramètres
Discard
Type : BOOL
Valeur booléenne qui spécifie s’il faut conserver le contenu Direct3D dans le contrôleur de domaine GDI. TRUE indique au runtime de ne pas conserver le contenu Direct3D dans le contrôleur de domaine GDI ; autrement dit, le runtime ignore le contenu Direct3D. FALSE garantit que le contenu Direct3D est disponible dans le contrôleur de domaine GDI.
[out] phdc
Type : HDC*
Pointeur vers un handle HDC qui représente le contexte d’appareil actuel pour le rendu GDI.
Valeur retournée
Type : HRESULT
Retourne S_OK en cas de réussite ; sinon, un code d’erreur.
Remarques
Cette méthode n’est pas prise en charge par DXGI 1.0, fourni dans Windows Vista et Windows Server 2008. La prise en charge de DXGI 1.1 est requise, disponible sur Windows 7, Windows Server 2008 R2 et en tant que mise à jour de Windows Vista avec Service Pack 2 (SP2) (KB 971644) et Windows Server 2008 (Ko 971512).
Après avoir utilisé la méthode GetDC pour récupérer un contrôleur de domaine, vous pouvez effectuer un rendu sur la surface DXGI à l’aide de GDI.
La méthode GetDC lit la surface pour le rendu GDI et permet l’inter-opération entre les technologies DXGI et GDI.
Gardez à l’esprit les points suivants lors de l’utilisation de cette méthode :
- Vous devez créer la surface à l’aide de l’indicateur D3D11_RESOURCE_MISC_GDI_COMPATIBLE pour une surface ou de l’indicateur DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE pour les chaînes d’échange, sinon cette méthode échoue.
- Vous devez libérer l’appareil et appeler la méthode IDXGISurface1 ::ReleaseDC avant d’émettre de nouvelles commandes Direct3D.
- Cette méthode échoue si un contrôleur de domaine en suspens a déjà été créé par cette méthode.
- Le format de la surface ou de la chaîne d’échange doit être DXGI_FORMAT_B8G8R8A8_UNORM_SRGB ou DXGI_FORMAT_B8G8R8A8_UNORM.
- Sur GetDC, la cible de rendu dans la fusion de sortie du pipeline Direct3D est indépendante de la surface. Vous devez appeler la méthode ID3D11DeviceContext ::OMSetRenderTargets sur l’appareil avant le rendu Direct3D après le rendu GDI.
- Avant de redimensionner les mémoires tampons, vous devez libérer tous les contrôleurs de domaine en suspens.
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 );
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 7 [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows Server 2008 R2 [applications de bureau | Applications UWP] |
Plateforme cible | Windows |
En-tête | dxgi.h |
Bibliothèque | DXGI.lib |