> ## 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.

# Windows.Xbox.Input에서 GameInput으로 포팅

> Windows.Xbox.Input에서 GameInput으로 포팅

<a id="introductionSection" />

`Windows.Xbox.Input`은 GDK 이전 XBOX One 소프트웨어 개발 키트 개발용 입력 API입니다. 개념적으로, `GameInput`은 장치와 입력 판독값을 다른 방식으로 봅니다. 이 항목에서는 `Windows.Xbox.Input`과 `GameInput` 간의 몇 가지 주요 차이점을 설명합니다.

## 입력 중심 vs. 장치 중심

`Windows.Xbox.Input`과 `GameInput`의 핵심 차이점은 전자는 장치의 속성으로서 입력 상태를 얻기 위해 장치를 먼저 수집해야 한다는 점입니다. 반면, `GameInput`은 관련 장치를 가진 입력 판독값의 필터링 가능한 스트림으로 시작합니다.

## A 버튼 누름 찾기

게임이 처음 시작될 때 사용자는 계속할 준비가 되었음을 나타내기 위해 종종 **A**를 눌러야 합니다. 여기서는 `Windows.Xbox.Input`과 `GameInput`에서 이를 수행하는 방법을 비교하는 예를 살펴봅니다. 이 예에서는 게임패드만 찾습니다. 예는 시연을 위해 단순화되었습니다.

### Windows.Xbox.Input

다음 코드 예제는 시스템에 연결된 모든 게임패드를 열거하고 `gamepads` 벡터에 저장하는 것으로 시작합니다. 그런 다음 루프에서 `gamepads`를 순회하고, 각 게임패드의 현재 입력 판독값을 확인하며, 각 판독값에서 **A**를 확인합니다.

<Note>이 코드는 이전 API를 참조합니다. 이 호출은 `GameInput`에서는 존재하지 않습니다.</Note>

```c++ theme={null}
void PollGamepadInput()
{
    // Find all gamepads.
    IVectorView<IGamepad^>^ gamepads = Gamepad::GetGamepads();

    // Cycle through each gamepad.
    for ( unsigned int i = 0; i < gamepads->Size; ++i )
    {
        // Get the gamepad's current reading.
        IGamepadReading^ reading = gamepads->GetAt(i)->GetCurrentReading();

        if ( reading->IsAPressed )
        {
            // Logic for the A button being pressed.
        }
    }
}
```

이 모델은 개선될 여지가 있습니다. 게임은 시스템에 연결된 여러 장치의 사본을 저장해야 합니다. 각 장치의 세부 사항을 알아야 합니다. 또한 모든 게임패드의 로컬 사본을 저장함으로써 코드는 최신 판독값을 얻는 대신 시점의 상태를 캡처합니다.

### GameInput

다음 코드 예제에서는 코드가 어떤 장치에서든 가장 최근 게임패드 판독값을 찾습니다. [GameInputKind](/reference/input/gameinput/enums/gameinputkind) 필터를 `GamePad`로 설정하여 [GetCurrentReading](/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getcurrentreading)을 호출함으로써, 코드는 `m_gameInput`에게 게임패드 판독값만 반환하도록 요청합니다. 다음으로, 코드는 판독값의 상태를 쿼리하고 **A** 누름을 확인합니다.

어떤 게임패드와 통신하고 있는지 추적하고 싶을 수 있습니다. 더 완전한 예제는 [GameInput 판독값](/build/core-features/common/input/overviews/input-readings)을 참조하세요.

```c++ theme={null}
IGameInput* g_gameInput = nullptr;

HRESULT InitializeInput()
{
    return GameInputCreate(&g_gameInput);
}

void PollGamepadInput()
{
    ComPtr<IGameInputReading> reading;

    // Get the most current gamepad reading, not filtering by a specific device.
    // An error from the GetReading method indicates that no gamepad readings
    // were found.
    if (SUCCEEDED(g_gameInput->GetCurrentReading(GameInputKindGamepad, nullptr, &reading)))
    {
        // Read the gamepad state.
        GameInputGamepadState state;
        reading->GetGamepadState(&state);

        if (state.buttons & GameInputGamepadA)
        {
            // Logic for the A button being pressed.
        }
    }
}
```

<Note>`GameInput`은 장치를 순회하고 각 판독값을 확인할 필요가 없습니다. 대신, 한 번의 메서드 호출로 최신 입력 상태를 확인할 수 있습니다. 각 물리적 장치에 대해 얼마나 많이 또는 얼마나 적게 알지 선택할 수 있습니다.</Note>

<a id="seeAlsoSection" />

## 참조 API 문서

* [GameInput(API 콘텐츠)](/reference/input/gameinput/gameinput_members)

## 함께 보기

[GameInput 개요](/build/core-features/common/input/overviews/input-overview)

[입력 API 참조](/reference/input/gc-reference-input-toc)

[Microsoft Game Development Kit](/services/playfab/sdks/platforms/gdk)


## Related topics

- [기존 입력 스택과 GameInput 결합](/ko/build/core-features/common/input/porting/input-porting.md)
- [XInput에서 GameInput으로 포팅](/ko/build/core-features/common/input/porting/input-porting-xinput.md)
- [기존 입력 코드를 GameInput으로 이식하기](/ko/build/core-features/common/input/porting/index.md)
- [XBOX GDK로의 포팅 가이드](/ko/home/build-first-title/porting-guides.md)
- [GameInput 자주 묻는 질문](/ko/build/core-features/common/input/overviews/input-faq.md)
