Método IDXGISurface1::GetDC (dxgi.h)
Retorna um DC (contexto de dispositivo) que permite renderizar para uma superfície DXGI (Infraestrutura Gráfica) do Microsoft DirectX usando a GDI (Interface de Dispositivo gráfico) do Windows.
Sintaxe
HRESULT GetDC(
BOOL Discard,
[out] HDC *phdc
);
Parâmetros
Discard
Tipo: BOOL
Um valor booliano que especifica se o conteúdo do Direct3D deve ser preservado no DC GDI. TRUE direciona o runtime para não preservar o conteúdo do Direct3D no DC GDI; ou seja, o runtime descarta o conteúdo do Direct3D. FALSE garante que o conteúdo do Direct3D esteja disponível no DC GDI.
[out] phdc
Tipo: HDC*
Um ponteiro para um identificador HDC que representa o contexto atual do dispositivo para renderização de GDI.
Retornar valor
Tipo: HRESULT
Retorna S_OK se tiver êxito; caso contrário, um código de erro.
Comentários
Esse método não tem suporte do DXGI 1.0, que foi enviado no Windows Vista e no Windows Server 2008. O suporte ao DXGI 1.1 é necessário, que está disponível no Windows 7, windows server 2008 R2 e como uma atualização para o Windows Vista com Service Pack 2 (SP2) (KB 971644) e Windows Server 2008 (KB 971512).
Depois de usar o método GetDC para recuperar um DC, você pode renderizar para a superfície DXGI usando GDI.
O método GetDC lê a superfície para renderização de GDI e permite a interoperabilidade entre as tecnologias DXGI e GDI.
Tenha o seguinte em mente ao usar este método:
- Você deve criar a superfície usando o sinalizador D3D11_RESOURCE_MISC_GDI_COMPATIBLE para uma superfície ou usando o sinalizador DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE para cadeias de troca, caso contrário, esse método falhará.
- Você deve liberar o dispositivo e chamar o método IDXGISurface1::ReleaseDC antes de emitir novos comandos Direct3D.
- Esse método falhará se um DC pendente já tiver sido criado por esse método.
- O formato da superfície ou cadeia de troca deve ser DXGI_FORMAT_B8G8R8A8_UNORM_SRGB ou DXGI_FORMAT_B8G8R8A8_UNORM.
- No GetDC, o destino de renderização na fusão de saída do pipeline do Direct3D é desvinculado da superfície. Você deve chamar o método ID3D11DeviceContext::OMSetRenderTargets no dispositivo antes da renderização do Direct3D após a renderização de GDI.
- Antes de redimensionar buffers, você deve liberar todos os DCs pendentes.
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 | Valor |
---|---|
Cliente mínimo com suporte | Windows 7 [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | dxgi.h |
Biblioteca | DXGI.lib |