IDXGISwapChain::ResizeBuffers 메서드(dxgi.h)
스왑 체인의 백 버퍼 크기, 형식 및 버퍼 수를 변경합니다. 애플리케이션 창의 크기를 조정할 때 호출해야 합니다.
구문
HRESULT ResizeBuffers(
UINT BufferCount,
UINT Width,
UINT Height,
DXGI_FORMAT NewFormat,
UINT SwapChainFlags
);
매개 변수
BufferCount
형식: UINT
스왑 체인의 버퍼 수(모든 후면 및 전면 버퍼 포함). 이 숫자는 스왑 체인을 만든 버퍼 수와 다를 수 있습니다. 이 숫자는 DXGI_MAX_SWAP_CHAIN_BUFFERS 초과할 수 없습니다. 스왑 체인의 기존 버퍼 수를 유지하려면 이 숫자를 0으로 설정합니다. 대칭 이동 프레젠테이션 모델에 대해 두 개 미만의 버퍼를 지정할 수 없습니다.
Width
형식: UINT
백 버퍼의 새 너비입니다. 0을 지정하면 DXGI는 대상 창의 클라이언트 영역 너비를 사용합니다. IDXGIFactory2::CreateSwapChainForComposition 메서드를 호출하여 컴퍼지션 화면에 대한 스왑 체인을 만드는 경우 너비를 0으로 지정할 수 없습니다.
Height
형식: UINT
백 버퍼의 새 높이입니다. 0을 지정하면 DXGI는 대상 창의 클라이언트 영역 높이를 사용합니다. IDXGIFactory2::CreateSwapChainForComposition 메서드를 호출하여 컴퍼지션 화면에 대한 스왑 체인을 만드는 경우 높이를 0으로 지정할 수 없습니다.
NewFormat
형식: DXGI_FORMAT
백 버퍼의 새 형식에 대한 DXGI_FORMAT 형식의 값입니다. 이 값을 DXGI_FORMAT_UNKNOWN 설정하여 백 버퍼의 기존 형식을 유지합니다. 대칭 이동 프레젠테이션 모델은 비트 블록 전송(비트블렛) 모델보다 더 제한된 형식 집합을 지원합니다.
SwapChainFlags
형식: UINT
비트 OR 연산을 사용하여 결합된 DXGI_SWAP_CHAIN_FLAG 형식 값의 조합입니다. 결과 값은 스왑 체인 동작에 대한 옵션을 지정합니다.
반환 값
형식: HRESULT
성공하면 S_OK 반환합니다. 그렇지 않으면 오류 코드입니다. 오류 코드 목록은 DXGI_ERROR 참조하세요.
설명
백 버퍼에 대한 미해결 참조를 모두 해제하지 않으면 스왑 체인의 크기를 조정할 수 없습니다. ResizeBuffers가 성공하려면 백 버퍼에서 모든 직접 및 간접 참조를 해제해야 합니다.
직접 참조는 리소스에서 AddRef 를 호출한 후 애플리케이션에 의해 유지됩니다.
간접 참조는 리소스에 대한 뷰에 의해 유지되고, 리소스 보기를 디바이스 컨텍스트에 바인딩하고, 리소스를 사용한 명령 목록, 해당 리소스에 대한 보기를 사용한 명령 목록, 리소스를 사용한 다른 명령 목록을 실행한 명령 목록 등을 보유합니다.
ResizeBuffers를 호출하기 전에 애플리케이션이 리소스, 리소스에 대한 뷰 및 리소스 또는 뷰를 사용하는 명령 목록에 대해 적절한 수의 릴리스 호출을 호출하여 모든 참조를 해제하고 리소스나 뷰가 디바이스 컨텍스트에 바인딩되지 않도록 합니다. ID3D11DeviceContext::ClearState를 사용하여 모든 참조가 해제되도록 할 수 있습니다. 뷰가 지연된 컨텍스트에 바인딩된 경우 부분적으로 빌드된 명령 목록도 삭제해야 합니다( ID3D11DeviceContext::ClearState를 호출한 다음 , ID3D11DeviceContext::FinishCommandList를 호출한 다음 명령 목록에서 릴리스 ). ResizeBuffers를 호출한 후 IDXGISwapChain::GetBuffer를 통해 인터페이스를 다시 쿼리할 수 있습니다.
DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE 사용하여 만든 스왑 체인의 경우 ResizeBuffers를 호출하기 전에 스왑 체인의 백 버퍼 화면에서 IDXGISurface1::ReleaseDC를 호출하여 미해결 GDI DC(디바이스 컨텍스트)가 열려 있지 않은지 확인합니다.
클라이언트 창의 크기가 조정될 때(즉, 애플리케이션이 WM_SIZE 메시지를 수신할 때) ResizeBuffers 를 호출하는 것이 좋습니다.
Windows 8의 IDXGISwapChain::ResizeBuffers 와 Windows 7의 유일한 차이점은 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL 또는 DXGI_SWAP_EFFECT_FLIP_DISCARD 값 집합으로 만든 대칭 이동 프레젠테이션 모델 스왑 체인입니다. Windows 8에서는 ResizeBuffers를 호출하여 전체 화면 모드와 창 모드 간의 전환을 실현해야 합니다. 그렇지 않으면 IDXGISwapChain::P resent 메서드에 대한 다음 호출이 실패합니다.
요구 사항
대상 플랫폼 | Windows |
헤더 | dxgi.h |
라이브러리 | DXGI.lib |