DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3DSurface9 GetDC [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
장치 문맥을 얻어온다.
구문
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::ReleaseDC ,D3DUSAGE ,D3DPOOL ,D3DPRESENT_PARAMETERS