IDXGISurface1::GetDC 메서드(dxgi.h)
Windows GDI(그래픽 디바이스 인터페이스)를 사용하여 Microsoft DXGI(DirectX Graphics Infrastructure) 화면에 렌더링할 수 있는 DC(디바이스 컨텍스트)를 반환합니다.
구문
HRESULT GetDC(
BOOL Discard,
[out] HDC *phdc
);
매개 변수
Discard
형식: BOOL
GDI DC에서 Direct3D 콘텐츠를 유지할지 여부를 지정하는 부울 값입니다. TRUE 는 GDI DC에서 Direct3D 콘텐츠를 유지하지 않도록 런타임에 지시합니다. 즉, 런타임은 Direct3D 콘텐츠를 삭제합니다. FALSE 는 Direct3D 콘텐츠를 GDI DC에서 사용할 수 있도록 보장합니다.
[out] phdc
형식: HDC*
GDI 렌더링에 대한 현재 디바이스 컨텍스트를 나타내는 HDC 핸들에 대한 포인터입니다.
반환 값
형식: HRESULT
성공하면 S_OK 반환합니다. 그렇지 않으면 오류 코드입니다.
설명
이 메서드는 Windows Vista 및 Windows Server 2008에서 제공된 DXGI 1.0에서 지원되지 않습니다. DXGI 1.1 지원은 Windows 7, Windows Server 2008 R2 및 WINDOWS Vista sp2(서비스 팩 2)(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 |
라이브러리 | DXGI.lib |