다음을 통해 공유


XGameStreamingGetAssociatedFrame

특정 입력 판독값에서 프레임 파이프라인 토큰을 가져옵니다.

구문

HRESULT XGameStreamingGetAssociatedFrame(  
         IGameInputReading* gamepadReading,  
         D3D12XBOX_FRAME_PIPELINE_TOKEN* framePipelineToken  
)  

매개 변수

gamepadReading _In_
형식: IGameInputReading*

쿼리 중인 게임 패드 판독값입니다.

framePipelineToken _Out_
형식: D3D12XBOX_FRAME_PIPELINE_TOKEN*

플레이어가 입력을 취했을 때 클라이언트 장치에 표시된 프레임과 연결된 프레임 파이프라인 토큰입니다. 이 파이프라인 토큰이 게임에서 표시되고 클라이언트 장치로 전송되면 PresentX 호출에 해당합니다.

반환 값

형식: HRESULT

성공한 경우 S_OK를 반환하고, 그렇지 않으면 오류 코드를 반환합니다.

잠재적인 오류

오류 코드 오류 값 오류 발생 원인
E_GAMESTREAMING_NOT_INITIALIZED 0x89245400 XGameStreaming 런타임이 아직 초기화되지 않았습니다. 다른 API를 호출하기 전에 XGameStreamingInitialize를 호출합니다.
E_GAMESTREAMING_NO_DATA 0x89245402 요청한 데이터를 사용할 수 없습니다. 나중에 데이터를 사용할 수 있습니다.
E_GAMESTREAMING_NOT_STREAMING_CONTROLLER 0x89245404 스트리밍 컨트롤러에서 현재 판독값을 가져오지 않았습니다.

설명

플레이어가 게임을 스트리밍하는 경우 입력을 받았을 때 플레이어의 장치에 표시된 프레임에 따라 게임이 게임 동작을 변경하자 한다면 XGameStreamingGetAssociatedFrame을(를) 이용할 수 있습니다.

이렇게 하면 게임이 현재 시점이 아니라 입력 시점에 플레이어가 본 프레임을 기준으로 시뮬레이션 결정을 내릴 수 있습니다.

XGameStreamingGetAssociatedFrame은(는) 새 입력 판독값을 만들 때 표시되는 프레임에 대한 정보만 제공합니다. 플레이어가 입력하지 않았을 때 무엇이 표시되고 있었는지 게임이 알고 싶다면 게임은 XGameStreamingGetLastFrameDisplayed를 활용해야 합니다.

// In this example, when processing input, the game would like to pass along the frame 
// that was being displayed to the player at the time of input so that their simulation
// engine can take that into account.

// The framePipelineToken was initially captured at the callback of WaitFrameEventX

void Game::Update(DX::StepTimer const& timer)
{
    IGameInputReading* reading;
    if (SUCCEEDED(g_gameInput->GetCurrentReading(GameInputKindGamepad, g_gamepad, &reading)))
    {
        D3D12XBOX_FRAME_PIPELINE_TOKEN framePipelineToken = D3D12XBOX_FRAME_PIPELINE_TOKEN_NULL;        

        if SUCCEEDED(XGameStreamingGetAssociatedFrame(&reading, &framePipelineToken)) 
        {
            SimulateBasedOnInputAndFrameDisplayed(reading, framePipelineToken);
        }
        else 
        {
            // simulate based on current frame
            SimulateBasedOnInput(reading);
        }

        reading->Release();
    }
}

요구 사항

헤더: xgamestreaming.h

라이브러리: xgameruntime.lib

지원되는 플랫폼: Windows, Xbox One 패밀리 콘솔 및 Xbox Series 콘솔

참고 항목

XGameStreamingGetLastFrameDisplayed
XGameStreaming
게임 스트리밍 대기시간 보정 개요