IDirect3DDevice9::Reset 메서드(d3d9helper.h)

스왑 체인의 형식, 크기 및 형식을 다시 설정합니다.

구문

HRESULT Reset(
  [in, out] D3DPRESENT_PARAMETERS *pPresentationParameters
);

매개 변수

[in, out] pPresentationParameters

형식: D3DPRESENT_PARAMETERS*

새 프레젠테이션 매개 변수를 설명하는 D3DPRESENT_PARAMETERS 구조체에 대한 포인터입니다. 이 값은 NULL일 수 없습니다.

전체 화면 모드로 전환할 때 Direct3D는 백 버퍼 형식과 일치하는 데스크톱 형식을 찾으려고 시도하므로 백 버퍼와 전면 버퍼 형식이 동일합니다(색 변환 필요 없음).

이 메서드가 반환되는 경우:

  • BackBufferCount, BackBufferWidth 및 BackBufferHeight는 0으로 설정됩니다.
  • BackBufferFormat은 창 모드에 대해서만 D3DFMT_UNKNOWN 설정됩니다. 전체 화면 모드는 형식을 지정해야 합니다.

반환 값

형식: HRESULT

가능한 반환 값은 D3D_OK, D3DERR_DEVICELOST, D3DERR_DEVICEREMOVED, D3DERR_DRIVERINTERNALERROR 또는 D3DERR_OUTOFVIDEOMEMORY( D3DERR 참조)입니다.

설명

IDirect3DDevice9::Reset에 대한 호출이 실패하면 IDirect3DDevice9::TestCooperativeLevel 호출에서 D3DERR_DEVICENOTRESET 반환 값으로 표시된 대로 디바이스가 이미 "다시 설정되지 않음" 상태인 경우(IDirect3DDevice9::TestCooperativeLevel 호출에서 D3DERR_DEVICELOST 반환 값으로 표시됨) 디바이스가 "손실" 상태에 배치됩니다. 손실된 디바이스의 컨텍스트에서 IDirect3DDevice9::Reset 사용에 대한 자세한 내용은 IDirect3DDevice9::TestCooperativeLevel 및 분실 디바이스(Direct3D 9)를 참조하세요.

IDirect3DDevice9::Reset을 호출하면 모든 텍스처 메모리 표면이 손실되고, 관리되는 텍스처가 비디오 메모리에서 플러시되고, 모든 상태 정보가 손실됩니다. 디바이스에 대해 IDirect3DDevice9::Reset 메서드를 호출하기 전에 애플리케이션은 명시적 렌더링 대상, 깊이 스텐실 표면, 추가 스왑 체인, 상태 블록 및 디바이스와 연결된 D3DPOOL_DEFAULT 리소스를 해제해야 합니다.

스왑 체인에는 전체 화면 또는 창의 두 가지 유형이 있습니다. 새 스왑 체인이 전체 화면인 경우 어댑터는 새 크기와 일치하는 디스플레이 모드에 배치됩니다.

Direct3D 9 애플리케이션은 이 호출 중에 메시지가 전송될 것으로 예상할 수 있습니다(예: 이 호출이 반환되기 전에). 애플리케이션은 현재 Direct3D를 호출하지 않도록 주의해야 합니다. 또한 IDirect3DDevice9::Reset 이 실패하면 호출할 수 있는 유일한 유효한 메서드는 IDirect3DDevice9::Reset, IDirect3DDevice9::TestCooperativeLevel 및 다양한 Release 멤버 함수입니다. 다른 메서드를 호출하면 예외가 발생할 수 있습니다.

초기화 중인 디바이스를 만드는 데 사용한 것과 다른 스레드에서 호출되면 IDirect3DDevice9::Reset 호출이 실패합니다.

픽셀 셰이더 및 꼭짓점 셰이더는 Direct3D 9에 대한 IDirect3DDevice9::Reset 호출을 유지합니다. 애플리케이션에서 명시적으로 다시 만들 필요가 없습니다.

IDirect3D9::CreateDevice, IDirect3DDevice9::Reset 및 IDirect3DDevice9::CreateAdditionalSwapChain을 호출할 때 창 모드 백 버퍼 형식에 대해 D3DFMT_UNKNOWN 지정할 수 있습니다. 즉, 창 모드에 대해 IDirect3D9::CreateDevice 를 호출하기 전에 애플리케이션이 현재 데스크톱 형식을 쿼리할 필요가 없습니다. 전체 화면 모드의 경우 백 버퍼 형식을 지정해야 합니다. BackBufferCount를 0(BackBufferCount = 0)과 같게 설정하면 하나의 백 버퍼가 생성됩니다.

그룹에서 둘 이상의 디스플레이 어댑터를 다시 설정하려고 할 때 pPresentationParameters를 설정하여 어댑터 그룹의 각 디스플레이에 대해 하나씩 D3DPRESENT_PARAMETERS 구조의 배열을 가리킵니다.

D3DCREATE_ADAPTERGROUP_DEVICE 사용하여 멀티헤드 디바이스를 만든 경우 IDirect3DDevice9::Reset에는 각 구조체가 전체 화면 디스플레이를 지정해야 하는 D3DPRESENT_PARAMETERS 구조체 배열이 필요합니다. 창 모드로 다시 전환하려면 애플리케이션이 디바이스를 삭제하고 창 모드에서 다중 헤드가 아닌 디바이스를 다시 만들어야 합니다.

요구 사항

   
대상 플랫폼 Windows
헤더 d3d9helper.h(D3D9.h 포함)
라이브러리 D3D9.lib

추가 정보

D3DPRESENT_PARAMETERS

D3DSWAPEFFECT

IDirect3DDevice9

IDirect3DDevice9::Present

멀티헤드(Direct3D 9)