Articulo de referencia

Entrada directa

DirectInput es una interfaz de programación de aplicaciones heredada [ 1 ] desarrollada por la empresa estadounidense Microsoft que recopila la entrada del usuario a través de d...

DirectInput es una interfaz de programación de aplicaciones heredada [ 1 ] desarrollada por la empresa estadounidense Microsoft que recopila la entrada del usuario a través de dispositivos como el ratón , el teclado y los mandos . También proporciona un sistema para el mapeo de acciones , que permite al usuario asignar acciones específicas dentro de un juego a los botones y ejes de los dispositivos de entrada. Además, gestiona dispositivos de retroalimentación háptica /de fuerza (entrada/salida). Microsoft también introdujo una biblioteca de entrada llamada XInput específicamente para el mando de Xbox 360 .

DirectInput admite hasta 128 botones, 8 ejes y 4 interruptores de punto de vista.

DirectInput y XInput ofrecen ventajas sobre los eventos de entrada normales de Win32:

  • Permiten que una aplicación recupere datos de los dispositivos de entrada incluso cuando la aplicación está en segundo plano.
  • Proporcionan compatibilidad total con cualquier tipo de dispositivo de entrada, así como con la retroalimentación háptica.
  • Mediante el mapeo de acciones , las aplicaciones pueden recuperar datos de entrada sin necesidad de saber qué tipo de dispositivo generó esa entrada.

Aunque DirectInput forma parte de la biblioteca DirectX , no ha sufrido modificaciones significativas desde DirectX 8 (2001-2002). Microsoft recomienda que las nuevas aplicaciones utilicen el bucle de mensajes de Windows para la entrada de teclado y ratón en lugar de DirectInput (como se indica en la presentación de Meltdown 2005 [ 2 ] ), y que utilicen GameInput en lugar de las API heredadas como DirectInput o XInput. [ 3 ]

Historia

DirectX incluyó DirectInput desde la versión 1.0 (1995). Inicialmente, solo ofrecía soporte real para joysticks, ya que los módulos de ratón y teclado simplemente proporcionaban adaptadores a la API estándar de Win32 . DirectX versión 3.0 (1996) añadió soporte para teclados y ratones; también mejoró el soporte para joysticks. DirectX 5.0 (1997) incluyó un soporte para joysticks muy mejorado, que incluía la adición de retroalimentación háptica, el aumento del número de botones, el cambio del modelo subyacente del controlador del dispositivo y la incorporación de una API basada en COM . El soporte para ratón también aumentó el número de botones visibles de cuatro a ocho. En DirectX 7.0 (1999-), DirectInput añadió una característica largamente prometida de ver ratones individuales de forma muy similar a los joysticks individuales, pero la característica no funcionó con la versión posterior de Windows XP , aunque a partir de 2010Funciona con Windows 98/Me y DirectX 9. DirectX 8.0 (2000), la última versión con cambios importantes, incluía la asignación de acciones y una compatibilidad más amplia con diferentes tipos de dispositivos.

Aunque Microsoft inicialmente pretendía que DirectInput manejara todas las entradas, esto no funcionó. A partir de 2011Microsoft ya no recomienda usar DirectInput para teclados o ratones, y ha comenzado a promover el nuevo XInput para los controladores de Xbox 360. [ 4 ] En Windows Vista , Windows 7 y versiones posteriores de Windows, se eliminó la interfaz de usuario de asignación de acciones integrada. [ 5 ] DirectInput no está disponible para las aplicaciones de la Tienda Windows.

Entrada X

XInput, [ 6 ] una API más reciente pero ahora obsoleta [ 7 ] para controladores de "próxima generación", se presentó en diciembre de 2005 junto con el lanzamiento de la Xbox 360. Esta especificación brindó soporte para controladores de Xbox 360 en Windows XP SP1 y sistemas operativos posteriores, y Microsoft la describe como más fácil de programar y que requiere menos configuración que DirectInput. XInput es compatible con DirectX versión 9 y posteriores.

Compatibilidad con mandos de Xbox 360

Un mando de Xbox 360 , con el controlador predeterminado de Microsoft, tiene las siguientes limitaciones con DirectInput, en comparación con XInput: [ 8 ]

  • Los botones no son precisos. Esto puede causar problemas con juegos que no admiten la reasignación de controles.
  • Los gatillos izquierdo y derecho actuarán como un único eje que representa la diferencia con signo entre los gatillos, y no como un eje analógico independiente o un botón.
  • Los efectos de vibración no funcionarán.
  • La consulta de dispositivos de auriculares no funcionará, XInput 1.4 como parte de Windows 8 introdujo la compatibilidad con auriculares Xbox. [ 9 ]

Según MSDN , "la combinación de los gatillos izquierdo y derecho en DirectInput es intencionada. Los juegos siempre han asumido que los ejes de los dispositivos DirectInput están centrados cuando no hay interacción del usuario con el dispositivo. Sin embargo, el mando de Xbox 360 fue diseñado para registrar el valor mínimo, no el centro, cuando no se mantienen pulsados ​​los gatillos". MSDN propuso la "solución" de combinar los gatillos, configurando uno en una dirección positiva y el otro en una dirección negativa, de modo que la ausencia de interacción del usuario indique a DirectInput que el "control" está centrado. [ 10 ]

Lo anterior, sin embargo, ignora el hecho de que muchos controladores DirectInput, como los gamepads con joysticks analógicos duales y los conjuntos de controladores de volantes de carreras , ya asignan los gatillos y pedales de forma independiente. Además, muchos dispositivos DirectInput también tienen efectos de vibración. Al menos un controlador de terceros, XBCD, proporciona a los controladores de Xbox 360 la compatibilidad con vibración, zonas muertas y (opcionalmente) gatillos analógicos/digitales independientes a través de DirectInput que posee su controlador XInput. [ 11 ] Esto sugiere que el controlador del controlador de Xbox 360 de Microsoft recibió intencionadamente una compatibilidad con DirectInput más débil, en lugar de deberse a alguna diferencia entre las API de DirectInput y XInput. Por otro lado, los controladores de Xbox 360 que usan XInput solo admiten un control muy básico de los motores de vibración [ 12 ] [ 13 ] en contraste con la mayor gama de efectos compatibles a través de DirectInput. [ 14 ]

Referencias

  1. "DirectInput" . 10 de septiembre de 2011.
  2. "Presentación de diapositivas de Meltdown 2005 (.zip)" . Archivado del original el 21/05/2015 . Consultado el 13/11/2012 .{{cite web}}: CS1 maint: bot: estado de la URL original desconocido ( enlace )
  3. "Descripción general de GameInput" . 28 de marzo de 2024. pág. Introducción a GameInput, "Primeros pasos". GameInput es la API recomendada para todo el código nuevo, independientemente de la plataforma de destino, porque ofrece compatibilidad con todas las plataformas de Microsoft (incluidas versiones anteriores de Windows) y proporciona un rendimiento superior en comparación con las API heredadas. 
  4. "Aprovechando el movimiento del ratón de alta definición" . MSDN . Microsoft . Consultado el 25 de enero de 2009 .
  5. "DirectInput ConfigureDevices en Windows Vista" . 27 de diciembre de 2008. Archivado del original el 27 de diciembre de 2008. Consultado el 13 de noviembre de 2012 .
  6. "Comparación de las características de XInput y DirectInput - Aplicaciones Win32 | Microsoft Docs" . 25 de octubre de 2023.
  7. "Descripción general de GameInput" . 28 de marzo de 2024.
  8. "Comparación de las características de XInput y DirectInput - Aplicaciones Win32 | Microsoft Docs" . 25 de octubre de 2023.
  9. "Función XInputGetAudioDeviceIds" . MSDN . Consultado el 10 de diciembre de 2013 .
  10. "XInput y DirectInput" . Microsoft. 17 de septiembre de 2012. Consultado el 27 de diciembre de 2012 .
  11. "DirectInput ConfigureDevices en Windows Vista" . Archivado del original el 25 de abril de 2011. Consultado el 17 de julio de 2020 .
  12. "Control de vibración del mando" . Proyecto Free60. Archivado del original el 13 de marzo de 2009. Consultado el 25 de enero de 2009 .
  13. "XINPUT_VIBRATION" . Msdn.microsoft.com . Consultado el 25 de enero de 2009 .
  14. "DIEFFECT" . MSDN . Microsoft . Consultado el 25 de enero de 2009 .
  • Documentación de DirectInput de Microsoft
  • XInput y DirectInput