DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3DDevice9 Reset   [목차열람] [주소복사] [슬롯비우기]
IDirect3DDevice9::Reset 메서드
 
Microsoft DirectX 9.0

IDirect3DDevice9::Reset 메서드


스왑 체인의 타입, 사이즈, 포맷을 리셋 한다.

구문

HRESULT Reset(      

    D3DPRESENT_PARAMETERS* pPresentationParameters );

파라미터

pPresentationParameters
[in, out] 새로운 프레젠테이션 파라미터를 기술하는 D3DPRESENT_PARAMETERS 구조체의 포인터. NULL 를 지정할 수 없다.

풀 스크린 모드로 전환할 때, Microsoft® Direct3D® 는, 백 버퍼와 프론트 버퍼의 포맷을 동일하게 해 색변환의 필요성을 없애기 (위해)때문에, 백 버퍼 포맷에 합치하는 데스크탑 포맷을 찾는다.

반환값

성공했을 경우는,D3D_OK 를 돌려준다.

실패했을 경우는, 다음의 몇개의 값을 돌려준다.

D3DERR_DEVICELOST장치는, 손실하고 있지만, 현재 리셋 할 수 없다. 따라서, 렌더링은 불가능하다.
D3DERR_DRIVERINTERNALERROR

내부 드라이버 에러. 보통, 이 에러를 받으면 애플리케이션은 셧다운 해야 한다. 더 자세한 정보는, 「드라이버의 내부 에러」를 참조할것.

D3DERR_INVALIDCALL메서드의 호출이 무효이다. 예를 들어, 메서드의 파라미터에 무효인 값이 설정되어 있는 경우 등이다.
D3DERR_OUTOFVIDEOMEMORYDirect3D 가 처리를 실시하는데 충분한 디스플레이 메모리가 없다.
E_OUTOFMEMORYDirect3D 가 호출을 완료하기 위한 충분한 메모리를 할당할 수가 없었다.


주의

IDirect3DDevice9::Reset 의 호출이 실패 하면, 장치는 "손실" 상태 (IDirect3DDevice9::TestCooperativeLevel 의 호출로부터의 반환값 D3DERR_DEVICELOST 가 가리킨다)가 된다. 다만, 장치가 이미 "비리셋" 상태 (IDirect3DDevice9::TestCooperativeLevel 의 호출로부터의 반환값 D3DERR_DEVICENOTRESET 가 가리킨다)의 경우는 제외하다. 손실한 장치의 문맥에 있어서의 IDirect3DDevice9::Reset 의 사용법의 더 자세한 정보는, 「IDirect3DDevice9::TestCooperativeLevel」 및 「장치의 손실」을 참조할것.

IDirect3DDevice9::Reset 를 호출하면, 모든 텍스처 메모리 표면이 없어져, 관리되는 텍스처가 비디오 메모리로부터 플래시 되어 모든 스테이트 정보가 클리어 된다. 장치에 대해서 IDirect3DDevice9::Reset 메서드를 호출하기 전에, 애플리케이션에서는 명시적인 렌더링 타겟, 스텐실 표면, 추가 스왑 체인, 스테이트 블록, 및 장치에 관련지을 수 있는 D3DPOOL_DEFAULT 리소스를 릴리즈 할 필요가 있다.

스왑 체인의 타입에는, 풀 스크린과 윈도우가 있다. 새로운 스왑 체인이 풀 스크린의 경우, 어댑터는 새로운 사이즈에 맞은 디스플레이 모드로 설정된다.

Microsoft DirectX® 9.0 애플리케이션에서는, 이 호출중 (예를 들어, 이 호출이 돌아가기 전)은 애플리케이션에 메시지가 송신되는 것을 기대할 수 있다. 애플리케이션은, 이 때에 Direct3D 를 호출하지 않기 위한 경고를 받아들인다. 또,IDirect3DDevice9::Reset 가 실패했을 경우, 호출할 수가 있는 유효한 메서드는 IDirect3DDevice9::Reset,IDirect3DDevice9::TestCooperativeLevel, 다양한 Release 멤버 함수 뿐이다. 그 외의 메서드를 호출하면, 예외가 되는 경우가 있다.

리셋 하는 장치를 생성 한 thread와는 다른 thread로 IDirect3DDevice9::Reset 를 호출하면, 이 호출은 실패한다.

DirectX 9.0 에서는, 픽셀 셰이더와 정점 셰이더는,IDirect3DDevice9::Reset 호출의 뒤도 보관 유지된다. 애플리케이션측에서 명시적으로 재생성 할 필요는 없다.

윈도우 모드의 백 버퍼 포맷에 대해서는,IDirect3D9::CreateDevice ,IDirect3DDevice9::Reset,IDirect3DDevice9::CreateAdditionalSwapChain 의 호출로 D3DFMT_UNKNOWN 를 지정할 수 있다. 즉, 애플리케이션에서는, 윈도우 표시 모드에 대한 IDirect3D9::CreateDevice 를 호출하기 전에, 현재의 데스크탑 포맷을 문의할 필요는 없다. 풀 스크린 모드에 대해서는, 백 버퍼 포맷을 지정할 필요가 있다. Setting BackBufferCount = 0 은 1 개의 백 버퍼가 된다.

참조

D3DSWAPEFFECT ,D3DPRESENT_PARAMETERS ,IDirect3DDevice9::Present ,멀티 헤드


© 2002 Microsoft Corporation. All rights reserved.
↑TOP