IDXGIOutputDuplication::ReleaseFrame 메서드(dxgi1_2.h)
애플리케이션이 프레임 처리를 완료했음을 나타냅니다.
구문
HRESULT ReleaseFrame();
반환 값
ReleaseFrame은 다음을 반환합니다.
- 성공적으로 완료되었는지 S_OK.
- 애플리케이션이 이미 프레임을 해제했는지 DXGI_ERROR_INVALID_CALL.
- 데스크톱 중복 인터페이스가 잘못된 경우 DXGI_ERROR_ACCESS_LOST. 데스크톱 중복 인터페이스는 일반적으로 바탕 화면에 다른 유형의 이미지가 표시될 때 유효하지 않습니다. 이 상황의 예는 다음과 같습니다.
- 데스크톱 스위치
- 모드 변경
- DWM 켜기, DWM 끄기 또는 기타 전체 화면 애플리케이션에서 전환
- DXGI_ERROR 항목에 설명된 다른 오류 코드일 수 있습니다.
설명
애플리케이션은 다음 프레임을 획득하기 전에 프레임을 해제해야 합니다. 프레임이 해제되면 바탕 화면 비트맵이 포함된 표면이 잘못됩니다. DirectX 그래픽 작업에서는 표면을 사용할 수 없습니다.
성능상의 이유로 IDXGIOutputDuplication::AcquireNextFrame 메서드를 호출하기 직전에 프레임을 해제하여 다음 프레임을 획득하는 것이 좋습니다. 클라이언트가 프레임을 소유하지 않으면 운영 체제는 모든 데스크톱 업데이트를 표면에 복사합니다. 이로 인해 운영 체제가 발생하는 각 프레임에 대해 동일한 영역을 업데이트하는 경우 GPU 주기가 낭비됩니다. 클라이언트가 프레임을 획득하면 클라이언트는 이 지역에 대한 최종 업데이트만 인식합니다. 따라서 이전 프레임 동안 겹치는 업데이트는 모두 낭비됩니다. 클라이언트가 프레임을 획득하면 클라이언트는 표면을 소유합니다. 따라서 운영 체제는 업데이트된 지역만 추적할 수 있으며 데스크톱 업데이트를 표면에 복사할 수 없습니다. 이 동작으로 인해 현재 프레임을 해제하는 호출과 다음 프레임을 획득하기 위한 호출 사이의 시간을 최소화하는 것이 좋습니다.
요구 사항
지원되는 최소 클라이언트 | Windows 8 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2012 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | dxgi1_2.h |
라이브러리 | Dxgi.lib |