> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DirectCapture 개요

> DirectCapture는 디스플레이 하드웨어가 아닌 소프트웨어에서 호환 가능한 프레임을 캡처하여 XBOX Game Streaming 서버 지연 시간을 최대 72ms까지 단축합니다.

## DirectCapture

DirectCapture는 호환 가능한 프레임에 대해 서버 지연 시간을 자동으로 최소화하는 XBOX Game Streaming 플랫폼 기능입니다. [XGameStreamingGetDisplayDetails](/reference/system/xgamestreaming/functions/xgamestreaminggetdisplaydetails) API를 사용하여 호환 가능한 프레임 요구 사항을 쿼리할 수 있으므로 게임이 DirectCapture를 활용할 수 있도록 보장할 수 있습니다. 호환 가능한 프레임에 대한 요구 사항은 아래에 설명되어 있습니다.

XBOX Game Streaming은 표시된 프레임을 캡처(복사)한 다음 스트리밍용으로 프레임을 인코딩하는 방식으로 게임을 스트리밍합니다. DirectCapture가 없으면 프레임은 디스플레이 하드웨어를 사용해 입력 프레젠테이션 매개 변수에서 인코딩 형식으로 변환됩니다. 프레임은 Present Queue에서 0\~66ms의 지연 시간이 있고, 그런 다음 프레임을 캡처하기 위해 Display Writeback(DWB)을 통과하는 데 8.3ms의 지연이 추가로 발생합니다. Present Queue에서 소요되는 시간은 게임의 프레임 속도, 더블 또는 트리플 버퍼링 사용 여부 등에 따라 달라집니다. 8.3ms Display Writeback 시간은 HDMI 클록과 연결되어 있기 때문에 8.3ms로 고정되어 있습니다.

그러나 XBOX Game Streaming 서버에는 HDMI 디스플레이가 연결되어 있지 않으므로 DirectCapture는 디스플레이 하드웨어를 사용하는 대신 소프트웨어 구현을 통해 이 시간을 단축합니다. DirectCapture는 VSync 대기, 더블 또는 트리플 버퍼링 플립 대기 등을 제거하여 약 2\~12ms 내에 인코딩용 프레임을 캡처합니다. 이는 최대 72ms까지 지연 시간을 줄입니다.

지연 시간을 낮추려면 게임이 DirectCapture와 호환되는 매개 변수로 프레젠테이션해야 합니다.

* 지원되는 콘솔 모드
  * Lockhart Profiling Mode
* 지원되는 게임 렌더 해상도
  * [사용자 지정 해상도](/build/core-features/common/game-streaming/game-streaming-custom-resolution-overview)를 포함한 모든 해상도
* 지원되는 스왑체인 형식
  * DXGI\_FORMAT\_R8G8B8A8\_UNORM
  * DXGI\_FORMAT\_B8G8R8A8\_UNORM
  * DXGI\_FORMAT\_R8G8B8A8\_UNORM\_SRGB
  * DXGI\_FORMAT\_B8G8R8A8\_UNORM\_SRGB
  * DXGI\_FORMAT\_R10G10B10A2\_UNORM
  * DXGI\_FORMAT\_R9G9B9E5\_SHAREDEXP
* 지원되는 색 공간
  * DXGI\_COLOR\_SPACE\_RGB\_FULL\_G22\_NONE\_P709

위에 나열되지 않은 프레젠테이션 매개 변수는 현재 DirectCapture에서 지원되지 않습니다. 예를 들어 다음은 지원되지 않습니다.

* 게임 렌더 해상도: XDK 게임의 경우 3840x2160
* HDR
* 여러 프레젠테이션 플레인

DirectCapture와 호환되도록 프레젠테이션할 항목을 결정하는 데 도움이 되는 [XGameStreamingGetDisplayDetails](/reference/system/xgamestreaming/functions/xgamestreaminggetdisplaydetails)를 사용할 수 있으며, PIX 지원은 향후 출시될 예정입니다.

## 타이틀이 DirectCapture로 스트리밍되고 있는지 검증

스트리밍 로그 파일을 확인하여 타이틀이 DirectCapture로 실행되고 있는지 검증할 수 있습니다.

### 로그 파일 수집

스트리밍 로그 파일을 수집하려면 다음을 수행하세요.

1. 게임 실행 시작
2. 스트리밍 시작 및 콘텐츠 테스트 앱(CTA) 중 하나로 연결
3. 게임의 짧은 섹션 재생
4. 게임 종료
5. CTA 연결 해제
6. 로그가 기록 완료될 때까지 30초 대기
7. 로그를 C:\temp와 같은 로컬 디렉터리로 복사
   1. `xbcp xt:\XStreamLogs\XStreamManagementService.etl c:\temp`
   2. `xbcp xt:\XStreamLogs\nanotrace.etl c:\temp`

### 전환 메시지 보기

1. XStreamManagementService.etl을 [Windows Performance Analyzer](https://apps.microsoft.com/store/detail/windows-performance-analyzer/9N0W1B2BXGNZ)로 엽니다.
2. 왼쪽 창의 System Activity를 마우스 오른쪽 버튼으로 클릭하고 "Add graph to Analysis View"를 선택합니다.
3. 아래쪽 창에서 Microsoft.Xbox.StreamManagementService를 확장합니다.
4. Microsoft.Xbox.HostStreamingAgent 공급자를 찾아 필요한 경우 확장합니다. 이것이 누락된 경우, 위의 로그 파일 수집 단계를 반복합니다.
5. DirectCaptureLog 작업을 선택하고 필요한 경우 Unknown Process를 확장합니다.
6. 오른쪽으로 스크롤하여 0\_Message, 1\_Message 등의 이름이 지정된 열을 찾습니다. 각각은 DirectCapture의 순서에 따른 메시지입니다. 여러 행이 있는 경우 시간별로 정렬됩니다.
7. 각 메시지의 의미는 아래 표를 참조하세요. 이러한 메시지는 DirectCapture가 비활성화된 경우의 이유와 함께 DirectCapture 전환의 순서를 제공합니다.

| 메시지 ID | 메시지                                                                                                            |
| ------ | -------------------------------------------------------------------------------------------------------------- |
| 1      | Switch to DirectCapture                                                                                        |
| 2      | Switch to DWB (DirectCapture is disabled)                                                                      |
| 3      | Unsupported render plane configuration. 이는 게임 내 렌더 플레인 때문이거나 시스템이 타이틀 위에 오버레이(예: 시스템 알림)를 렌더링하기 때문일 수 있습니다.    |
| 4      | Unsupported pixel format. 해당 시점의 게임 픽셀 형식에 대해 연결된 PixelFormat을 참조하세요.                                          |
| 5      | Unsupported tile mode. 해당 시점의 게임 타일 모드에 대해 연결된 TileMode를 참조하세요.                                                |
| 6      | Unsupported game resolution. 해당 시점에 게임이 렌더링한 해상도를 확인하려면 연결된 GameResolutionWidth 및 GameResolutionHeight를 참조하세요. |
| 8      | 화면에 게임이 아닌 프레임이 있습니다.                                                                                          |
| 12     | DirectCapture가 활성화되지 않음(지원되지 않는 콘솔 모드 때문일 가능성이 높음)                                                             |
| 18     | 지원되지 않는 소스 사각형 크기                                                                                              |
| 19     | 지원되지 않는 Present 매개 변수 플래그                                                                                      |
| 21     | 지원되지 않는 대상 사각형 크기                                                                                              |

### 자세한 프레임 정보

1. nanotrace.etl을 Windows Performance Analyzer로 엽니다.
2. "Microsoft.Xbox.CloudStreaming" 공급자로 이동하여 "VideoFrameCaptureSourceChanged" 작업을 선택한 다음 "ApplicationClipService.exe" 프로세스를 확장하여 모든 "VideoFrameCaptureSourceChanged" 이벤트를 확인합니다.
3. "NewCaptureSource" 필드를 확인합니다.
   * 값이 "DCap"부터 시작하면 타이틀이 DirectCapture의 낮은 지연 시간으로 스트리밍됩니다.
   * "DWB" 값은 DirectCapture를 사용하지 않고 기본 캡처 메커니즘을 사용함을 의미합니다. 이는 다음의 경우에 발생합니다.
     * 타이틀이 DirectCapture와 호환되지 않는 프레임을 출력할 때
     * 시스템이 타이틀 위에 오버레이를 렌더링할 때(예: 시스템 알림)

## 참고 사항

* nanotrace.etl에는 제한된 기록이 있으므로 "VideoFrameCaptureSourceChanged"가 표시되지 않으면 세션이 너무 길었을 수 있습니다. 유효성을 확인하려면 더 짧은 세션을 실행하고 ETL을 확인하세요.
* 개발 키트의 DirectCapture 지원은 XBOX Series X 개발 키트로 제한됩니다.
* 자세한 내용은 [XBOX Game Streaming: Reducing Latency and Optimizing for the Best Mobile Experiences](https://www.youtube.com/watch?v=-WIXftoHCl4)를 시청하세요.

## 참고 항목

[사용자 지정 해상도 개요](/build/core-features/common/game-streaming/game-streaming-custom-resolution-overview)


## Related topics

- [게임 스트리밍 사용자 지정 해상도 모범 사례](/ko/build/core-features/common/game-streaming/game-streaming-custom-resolution-best-practices.md)
- [XBOX Game Streaming을 위한 게임 최적화](/ko/build/core-features/common/game-streaming/game-streaming-optimizing-your-game.md)
- [사용자 지정 해상도 개요](/ko/build/core-features/common/game-streaming/game-streaming-custom-resolution-overview.md)
- [XGameStreamingGetDisplayDetails](/ko/reference/system/xgamestreaming/functions/xgamestreaminggetdisplaydetails.md)
- [DirectStorage 개요](/ko/build/console-features/storage/directstorage/directstorage-overview.md)
