次の方法で共有


IDirect3DSurface9::GetDC メソッド

IDirect3DSurface9::GetDC メソッド

デバイス コンテキストを取得する。

構文

HRESULT GetDC(      
    HDC* phdc
);

パラメータ

  • phdc
    [out] サーフェイスのデバイス コンテキストへのポインタ。

戻り値

成功した場合は、D3D_OK を返す。

引数が無効な場合は、D3DERR_INVALIDCALL を返す。

注意

適用される制約を次に示す。

  • IDirect3DSurface9::GetDC は、以下の形式でのみ有効となる。D3DFMT_R5G6B5、D3DFMT_X1R5G5B5、D3DFMT_R8G8B8、D3DFMT_X8R8G8B8.アルファを含むフォーマットはサポートされない。 これは、Microsoft® Windows® Graphics Device Interface (GDI) の実装がアルファ チャンネルに関する明確に定義された動作を持たないからである。フォーマットの詳細については、「D3DFORMAT」を参照すること。
  • サーフェイスごとに一度に 1 つのデバイス コンテキストしか取得できない。
  • サーフェイスが既にロックされている場合、IDirect3DSurface9::GetDC は失敗する。サーフェイスがミップマップまたはキューブマップのメンバである場合、他のミップマップまたはキューブマップ メンバがロックされていると、IDirect3DSurface9::GetDC は失敗する。
  • レンダリング ターゲットの IDirect3DSurface9::GetDC は、ターゲットがロック可能でない限り (バック バッファの場合は D3DPRESENTFLAG_LOCKABLE_BACKBUFFER フラグを指定して作成されていない限り) 失敗する。
  • IDirect3DDevice9::CreateOffscreenPlainSurface で作成されていないサーフェイスの場合、デフォルト プール (D3DPOOL_DEFAULT) のサーフェイスの IDirect3DSurface9::GetDC は、サーフェイスが動的 (D3DUSAGE_DYNAMIC) またはロック可能なレンダリング ターゲットでない限り失敗する。
  • D3DPOOL_SCRATCH サーフェイスでは IDirect3DSurface9::GetDC は失敗する。

デバイス コンテキストがサーフェイス上に残っている場合、アプリケーションは以下のメソッドを呼び出すことはできない。

IDirect3DCubeTexture9 IDirect3DCubeTexture9::LockRect
IDirect3DDevice9 IDirect3DDevice9::ColorFill
IDirect3DDevice9::StretchRect
IDirect3DDevice9::UpdateSurface
IDirect3DDevice9::UpdateTexture
IDirect3DSurface9 IDirect3DSurface9::LockRect
IDirect3DSwapChain9 IDirect3DSwapChain9::Present *
IDirect3DTexture9 IDirect3DTexture9::LockRect

* (サーフェイスを含むスワップ チェーン上で)

IDirect3DSurface9::GetDC は暗黙的なロックを発生させ、後の使用のためにデバイス コンテキストを保持しない。これを解放するには、IDirect3DSurface9::ReleaseDC を呼び出す。

ミップマップまたはキューブマップのレベルで IDirect3DSurface9::GetDC/IDirect3DSurface9::ReleaseDC を呼び出すことはできるが、これらの呼び出しは、最上位レベル以外のミップレベルで低速になり、これらのミップレベルへの GDI 操作は加速されない。

デバイス コンテキストへのハンドル (HDC) は、Microsoft Win32® および GDI 機能へのアクセスを提供する。

参照

IDirect3DSurface9::ReleaseDCD3DUSAGED3DPOOLD3DPRESENT_PARAMETERS