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

# Portabilidad de Windows.XBOX.Input a GameInput

> Portabilidad de Windows.XBOX.Input a GameInput

<a id="introductionSection" />

`Windows.Xbox.Input` es la API de entrada para el desarrollo con el Software Development Kit de XBOX One anterior al GDK. Conceptualmente, `GameInput` ve los dispositivos y las lecturas de entrada de una manera diferente. Este tema describe algunas diferencias clave entre `Windows.Xbox.Input` y `GameInput`.

## Centrado en la entrada frente a centrado en el dispositivo

La diferencia clave entre `Windows.Xbox.Input` y `GameInput` es que el primero requiere que comience recopilando dispositivos y el estado de entrada como una propiedad de un dispositivo. En cambio, `GameInput` comienza con una secuencia filtrable de lecturas de entrada que tienen dispositivos asociados.

## Búsqueda de la pulsación del botón A

Cuando un juego se inicia por primera vez, a menudo el usuario debe presionar **A** para indicar que está listo para continuar. Aquí, un ejemplo compara cómo hacer esto en `Windows.Xbox.Input` y en `GameInput`. Este ejemplo solo busca un mando. Tenga en cuenta que los ejemplos están simplificados con fines de demostración.

### Windows.Xbox.Input

El siguiente ejemplo de código comienza enumerando todos los mandos que están conectados al sistema y almacenándolos en el vector `gamepads`. A continuación, itera por `gamepads` en un bucle, examina cada una de sus lecturas de entrada actuales y comprueba en cada lectura el botón **A**.

<Note>Este código hace referencia a una API anterior. Estas llamadas no existen en `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.
        }
    }
}
```

Este modelo podría mejorarse. El juego debe almacenar copias de los distintos dispositivos que están conectados al sistema. Debe comprender los detalles de cada dispositivo. Además, al almacenar una copia local de todos los mandos, el código captura un estado en un momento dado en lugar de obtener las lecturas más actualizadas.

### GameInput

En el siguiente ejemplo de código, el código busca la lectura de mando más reciente de cualquier dispositivo. Al llamar a [GetCurrentReading](/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getcurrentreading) con un filtro [GameInputKind](/reference/input/gameinput/enums/gameinputkind) establecido en `GamePad`, el código pide a `m_gameInput` que solo devuelva lecturas de mando. A continuación, el código consulta el estado de la lectura y comprueba si se ha presionado **A**.

Es posible que quiera realizar un seguimiento del mando con el que está interactuando. Para ver un ejemplo más completo, consulte [Lecturas de 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` no requiere que itere por los dispositivos y compruebe cada lectura. En su lugar, puede comprobar con una sola llamada de método el estado más reciente de la entrada. Puede elegir cuánto quiere saber acerca de cada dispositivo físico.</Note>

<a id="seeAlsoSection" />

## Documentación de referencia de la API

* [GameInput (contenido de la API)](/reference/input/gameinput/gameinput_members)

## Consulte también

[Información general de GameInput](/build/core-features/common/input/overviews/input-overview)

[Referencia de la API de entrada](/reference/input/gc-reference-input-toc)

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


## Related topics

- [Combinación de GameInput con pilas de entrada existentes](/es/build/core-features/common/input/porting/input-porting.md)
- [Portabilidad de código de entrada existente a GameInput](/es/build/core-features/common/input/porting/index.md)
- [Guías de portabilidad al GDK de XBOX](/es/home/build-first-title/porting-guides.md)
- [Portabilidad de XInput a GameInput](/es/build/core-features/common/input/porting/input-porting-xinput.md)
- [Preguntas más frecuentes sobre GameInput](/es/build/core-features/common/input/overviews/input-faq.md)
