다음을 통해 공유


IGameInput::GetNextReading

선택적으로 필터링된 입력 스트림에서 참조 측정값을 기준으로 사용 가능한 다음 IGameInputReading 인터페이스를 검색합니다.

구문

HRESULT GetNextReading(  
         IGameInputReading* referenceReading,  
         GameInputKind inputKind,  
         IGameInputDevice* device,  
         IGameInputReading** reading  
)  

매개 변수

referenceReading _In_
형식: IGameInputReading*

현재 IGameInputReading. 반환된 IGameInputReading 인터페이스는 이 참조 측정값 이후 다음 측정값입니다.

inputKind _In_
형식: GameInputKind

다음 측정값을 가져올 입력의 유형에 대한 필터입니다. GameInputKind 인터페이스가 플래그 변수입니다. 여러 GameInputKind 상수를 필터링하기 위해 여러 값을 결합할 수 있습니다. 여러 입력 유형이 지정된 경우, 최소 하나 이상의 입력 유형을 포함하는 모든 측정값이 일치하며 반환됩니다.

device _In_opt_
형식: IGameInputDevice*

다음 측정값을 가져올 특정 장치에 대한 필터입니다.

읽기 _COM_Outptr_
형식: IGameInputReading**

반환된 IGameInputReading 인터페이스는 referenceReading 입력 이후의 순차적인 측정값입니다.

반환 값

형식: HRESULT

함수 결과입니다. null IGameInputDevice 포인터가 전달된 경우 이 포인터는 E_NOTIMPL을 반환합니다.

설명

GetNextReadingGetPreviousReading 메서드는 앱이 입력 기록 측정값을 차례로 살펴볼 수 있게 합니다.

referenceReading 이후 측정값이 없거나, 제공된 장치 필터가 연결이 끊긴 장치의 것이거나, 시간이 너무 오래 경과되었고 참조 측정값과 반환된 측정값이 입력 스트림 기록 버퍼를 벗어난 경우 NULL 값과 오류 HRESULT이(가) 반환됩니다. 입력 스트림은 각 장치의 0.5초에 해당하는 측정값을 해당 내역 버퍼에 유지하므로 앱에서 경과된 시간 오류가 발생하는 경우는 많지 않을 것입니다.

다음 코드 예제는 특정 장치에서 모든 게임 패드 상태를 폴링하는 방법을 보여줍니다.

Microsoft::WRL::ComPtr<IGameInput> gameInput; 
Microsoft::WRL::ComPtr<IGameInputDevice> gamepad; 
Microsoft::WRL::ComPtr<IGameInputReading> prevReading; 
 
void PollGamepadInput() noexcept 
{ 
    if (!prevReading) 
    { 
        if (SUCCEEDED(gameInput->GetCurrentReading( 
            GameInputKindGamepad, 
            nullptr, 
            &prevReading))) 
        {
            prevReading->GetDevice(&gamepad);
 
            // Application-specific code to process the initial reading. 
        } 
    } 
 
    else 
    { 
        Microsoft::WRL::ComPtr<IGameInputReading> nextReading; 
        HRESULT hr = gameInput->GetNextReading( 
            prevReading.Get(), 
            GameInputKindGamepad, 
            gamepad.Get(), 
            &nextReading); 
 
        if (SUCCEEDED(hr)) 
        { 
            // Application-specific code to process the next reading. 
 
            prevReading = nextReading; 
        } 
 
        else if (hr != GAMEINPUT_E_READING_NOT_FOUND) 
        { 
            gamepad = nullptr; 
            prevReading = nullptr; 
        } 
    } 
}

요건

헤더: GameInput.h

라이브러리: xgameruntime.lib

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

참고 항목

GameInput 개요
IGameInput_GetCurrentReading
IGameInput_GetPreviousReading
IGameInput