Метод IDXGISurface1::GetDC (dxgi.h)
Возвращает контекст устройства (DC), который позволяет выполнять отрисовку в поверхности Microsoft DirectX Graphics Infrastructure (DXGI) с помощью интерфейса графических устройств Windows (GDI).
Синтаксис
HRESULT GetDC(
BOOL Discard,
[out] HDC *phdc
);
Параметры
Discard
Тип: BOOL
Логическое значение, указывающее, следует ли сохранять содержимое Direct3D в контроллере домена GDI. Значение TRUE указывает среде выполнения не сохранять содержимое Direct3D в контроллере домена GDI; то есть среда выполнения удаляет содержимое Direct3D. Значение FALSE гарантирует, что содержимое Direct3D будет доступно в контроллере домена GDI.
[out] phdc
Тип: HDC*
Указатель на дескриптор HDC , представляющий текущий контекст устройства для отрисовки GDI.
Возвращаемое значение
Тип: HRESULT
Возвращает S_OK в случае успешного выполнения; в противном случае — код ошибки.
Комментарии
Этот метод не поддерживается DXGI 1.0, который поставляется в Windows Vista и Windows Server 2008. Требуется поддержка DXGI 1.1, которая доступна в Windows 7, Windows Server 2008 R2, а также в качестве обновления для Windows Vista с пакетом обновления 2 (SP2) (971644 базы знаний) и Windows Server 2008 (971512 базы знаний).
После использования метода GetDC для получения контроллера домена можно выполнить отрисовку в поверхности DXGI с помощью GDI.
Метод GetDC считывает поверхность для отрисовки GDI и обеспечивает взаимодействие между технологиями DXGI и GDI.
При использовании этого метода учитывайте следующее:
- Поверхность необходимо создать с помощью флага D3D11_RESOURCE_MISC_GDI_COMPATIBLE для поверхности или флага DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE для цепочек буферов. В противном случае этот метод завершается ошибкой.
- Перед выполнением новых команд Direct3D необходимо освободить устройство и вызвать метод IDXGISurface1::ReleaseDC .
- Этот метод завершается сбоем, если этот метод уже создал необработанные контроллер домена.
- Формат поверхности или цепочки буферов должен быть DXGI_FORMAT_B8G8R8A8_UNORM_SRGB или DXGI_FORMAT_B8G8R8A8_UNORM.
- В GetDC целевой объект отрисовки в слиянии выходных данных конвейера Direct3D не связан с поверхностью. Необходимо вызвать метод ID3D11DeviceContext::OMSetRenderTargets на устройстве перед отрисовкой Direct3D после отрисовки GDI.
- Перед изменением размера буферов необходимо освободить все необработанные контроллеры домена.
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 |
Header | dxgi.h |
Библиотека | DXGI.lib |