Método IDXGISurface1::GetDC (dxgi.h)
Devuelve un contexto de dispositivo (DC) que permite representar en una superficie de Infraestructura de gráficos (DXGI) de Microsoft DirectX mediante la Interfaz de dispositivo gráfico (GDI) de Windows.
Sintaxis
HRESULT GetDC(
BOOL Discard,
[out] HDC *phdc
);
Parámetros
Discard
Tipo: BOOL
Valor booleano que especifica si se debe conservar el contenido de Direct3D en el controlador de dominio GDI. TRUE dirige el tiempo de ejecución para no conservar el contenido de Direct3D en el controlador de dominio de GDI; es decir, el tiempo de ejecución descarta el contenido de Direct3D. FALSE garantiza que el contenido de Direct3D está disponible en el controlador de dominio GDI.
[out] phdc
Tipo: HDC*
Puntero a un identificador HDC que representa el contexto de dispositivo actual para la representación de GDI.
Valor devuelto
Tipo: HRESULT
Devuelve S_OK si se ejecuta correctamente; de lo contrario, un código de error.
Comentarios
Este método no es compatible con DXGI 1.0, que se incluye en Windows Vista y Windows Server 2008. Se requiere compatibilidad con DXGI 1.1, que está disponible en Windows 7, Windows Server 2008 R2 y como actualización de Windows Vista con Service Pack 2 (SP2) (KB 971644) y Windows Server 2008 (KB 971512).
Después de usar el método GetDC para recuperar un controlador de dominio, puede representarlo en la superficie DXGI mediante GDI.
El método GetDC prepara la superficie para la representación GDI y permite la interoperación entre las tecnologías DXGI y GDI.
Tenga en cuenta lo siguiente al usar este método:
- Debe crear la superficie con la marca D3D11_RESOURCE_MISC_GDI_COMPATIBLE para una superficie o mediante la marca DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE para cadenas de intercambio; de lo contrario, se produce un error en este método.
- Debes liberar el dispositivo y llamar al método IDXGISurface1::ReleaseDC antes de emitir los nuevos comandos de Direct3D.
- Este método produce un error si este método ya ha creado un controlador de dominio pendiente.
- El formato de la superficie o la cadena de intercambio debe ser DXGI_FORMAT_B8G8R8A8_UNORM_SRGB o DXGI_FORMAT_B8G8R8A8_UNORM.
- En GetDC, el destino de representación en la fusión de salida de la canalización de Direct3D no está enlazado desde la superficie. Debes llamar al método ID3D11DeviceContext::OMSetRenderTargets en el dispositivo antes de la representación de Direct3D después de la representación de GDI.
- Antes de cambiar el tamaño de los búferes, debe liberar todos los controladores de dominio pendientes.
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 );
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 7 [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2008 R2 [aplicaciones de escritorio | Aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | dxgi.h |
Library | DXGI.lib |