Lecturas de GameInput
Lecturas de GameInput
Los paquetes de entrada sin procesar recibidos de cada dispositivo se encapsulan en objetos de “lectura”. Las lecturas contienen los datos originales del paquete sin procesar y (normalmente) una o varias transformaciones de los datos sin procesar en formatos de nivel superior. Además de su función como contenedores de datos, las lecturas también sirven como identificadores que hacen referencia a una posición específica dentro de la secuencia de entrada.
Al llamar a GetCurrentReading se recupera la lectura más reciente de la secuencia de entrada. Se puede pasar un filtro GameInputKind opcional que limita las lecturas devueltas a tipos específicos de entrada, como gamepad o teclado. También se puede pasar un filtro IGameInputDevice opcional que limita las lecturas devueltas solo a las generadas por el dispositivo especificado. Estos filtros se pueden aplicar de forma individual o conjunta.
Las instancias de IGameInputReading son singletons con recuento de referencias. Recuperar una lectura es una operación extremadamente rápida y ligera: no se realizan asignaciones ni copias de memoria, y la llamada a la API no usa bloqueos ni transiciones al modo kernel. Dado que las lecturas son singletons, una aplicación puede comparar los punteros de lectura por igualdad para saber si dos llamadas a GetCurrentReading han devuelto la misma lectura (lo que significa que no se generó ninguna entrada nueva).
Los juegos con necesidades de entrada menos complejas podrían simplemente sondear la entrada nueva una vez por fotograma y comparar el estado almacenado en las dos lecturas en busca de diferencias (si no son la misma lectura). Sin embargo, los juegos con necesidades de entrada más complejas podrían necesitar recorrer la secuencia de entrada para obtener una imagen completa de todos los cambios de estado de entrada que se han producido desde el fotograma anterior. Esto es posible gracias a los métodos GetNextReading y GetPreviousReading, que admiten los mismos filtros que GetCurrentReading. La secuencia de entrada mantiene el último medio segundo de lecturas históricas en su búfer.
Como alternativa, las aplicaciones pueden registrar una devolución de llamada que se invoca cada vez que se genera una entrada. Al igual que con los métodos sincrónicos anteriores, se pueden aplicar varios filtros para controlar qué tipos de lecturas se devuelven y de qué dispositivos. Para obtener más información, consulte Devoluciones de llamada de GameInput en la sección de temas avanzados de GameInput.
Los tipos de datos disponibles en una lectura dependen del dispositivo de entrada y de sus propiedades físicas. Por ejemplo, una lectura de un teclado estándar podría contener solo datos de teclado, mientras que una lectura de un teclado con trackball integrado podría contener tanto datos de teclado como de mouse.
Casi todos los mandos de juego generan lecturas que contienen datos genéricos de “mando”, que son simplemente una colección de estados anónimos de ejes y botones. Esto permite una amplia compatibilidad con dispositivos para las aplicaciones con una interfaz de usuario de asignación de entrada. Sin embargo, muchos mandos de juego (como los gamepads) también exponen en sus lecturas el conocido estado de formato fijo, que es mucho más fácil de consumir para los juegos típicos.
La interfaz IGameInputReading contiene métodos para recuperar el estado en cualquiera de los formatos que admite la lectura. Todas las diferentes representaciones disponibles en las lecturas están precalculadas, por lo que estos métodos simplemente copian unos pocos bytes de datos y regresan.
Última modificación el 28 de agosto de 2026
Temas relacionados
Portabilidad de Windows.XBOX.Input a GameInputGameInputMouseButtonsGameInputArcadeStickButtonsGameInputRacingWheelButtonsGameInputGamepadButtons