IDXGISurface1::GetDC 方法 (dxgi.h)
(DC) 返回设备上下文,该上下文允许你使用 Windows 图形设备接口 (GDI) 呈现到 Microsoft DirectX 图形基础结构 (DXGI) 图面。
HRESULT GetDC(
BOOL Discard,
[out] HDC *phdc
);
Discard
类型: BOOL
一个布尔值,指定是否在 GDI DC 中保留 Direct3D 内容。 TRUE 指示运行时不保留 GDI DC 中的 Direct3D 内容;也就是说,运行时放弃 Direct3D 内容。 FALSE 保证 Direct3D 内容在 GDI DC 中可用。
[out] phdc
类型: HDC*
指向 HDC 句柄的指针,该句柄表示 GDI 呈现的当前设备上下文。
类型: HRESULT
如果成功,则返回S_OK;否则为错误代码。
Windows Vista 和 Windows Server 2008 中提供的 DXGI 1.0 不支持此方法。 DXGI 1.1 支持是必需的,在 Windows 7、Windows Server 2008 R2 上可用,并且作为 Windows Vista 的更新,Service Pack 2 (SP2 ) (KB 971644) 和 Windows Server 2008 (KB 971512) 。
使用 GetDC 方法检索 DC 后,可以使用 GDI 呈现到 DXGI 图面。
GetDC 方法读取 GDI 呈现图面,并允许在 DXGI 和 GDI 技术之间进行互操作。
使用此方法时,请记住以下事项:
- 必须使用图面的 D3D11_RESOURCE_MISC_GDI_COMPATIBLE 标志或交换链的 DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE 标志来创建图面,否则此方法将失败。
- 在发出任何新的 Direct3D 命令之前,必须释放设备并调用 IDXGISurface1::ReleaseDC 方法。
- 如果此方法已创建未完成的 DC,则此方法将失败。
- 图面或交换链的格式必须 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB 或 DXGI_FORMAT_B8G8R8A8_UNORM。
- 在 GetDC 上,Direct3D 管道的输出合并中的呈现目标未从图面上绑定。 在 GDI 呈现后进行 Direct3D 呈现之前,必须在设备上调用 ID3D11DeviceContext::OMSetRenderTargets 方法。
- 在调整缓冲区大小之前,必须释放所有未完成的 DC。
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 );
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2008 R2 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | dxgi.h |
Library | DXGI.lib |