IDXGISurface1::GetDC メソッド (dxgi.h)
Windows グラフィックス デバイス インターフェイス (GDI) を使用して Microsoft DirectX グラフィックス インフラストラクチャ (DXGI) サーフェスにレンダリングできるデバイス コンテキスト (DC) を返します。
構文
HRESULT GetDC(
BOOL Discard,
[out] HDC *phdc
);
パラメーター
Discard
種類: BOOL
GDI DC で Direct3D コンテンツを保持するかどうかを指定するブール値。 TRUE は 、GDI DC で Direct3D コンテンツを保持しないようにランタイムに指示します。つまり、ランタイムは Direct3D コンテンツを破棄します。 FALSE を指定 すると、GDI DC で Direct3D コンテンツを使用できるようになります。
[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、および Service Pack 2 (SP2) (KB 971644) と Windows Server 2008 (KB 971512) を使用した Windows Vista の更新プログラムとして利用できます。
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 |