다이렉트 입력

DirectInput

컴퓨팅에서 DirectInput은 마우스, 키보드 또는 게임패드 등의 입력 장치를 통해 컴퓨터 사용자로부터 입력을 수집하기 위한 레거시[1] Microsoft API입니다.또한 사용자가 게임 내의 특정 액션을 입력 장치의 버튼과 축에 할당할 수 있는 액션 매핑 시스템도 제공합니다.또한 햅틱 피드백(입출력) 디바이스도 처리합니다.마이크로소프트는 Xbox 360 컨트롤러 전용으로 XInput이라고 불리는 새로운 입력 라이브러리를 선보였다.

DirectInput 및 XInput은 일반적인 Win32 입력 이벤트보다 이점을 제공합니다.

  • 애플리케이션이 백그라운드에 있는 경우에도 입력 디바이스에서 데이터를 취득할 수 있습니다.
  • 햅틱 피드백뿐만 아니라 모든 유형의 입력 장치에 대한 완전한 지원을 제공합니다.
  • 액션 매핑을 통해 어플리케이션은 어떤 종류의 디바이스가 입력을 생성했는지 알 필요 없이 입력 데이터를 취득할 수 있습니다.

DirectInput은 DirectX 라이브러리의 일부를 구성하지만 DirectX 8(2001~2002) 이후 크게 수정되지 않았습니다.Microsoft 에서는, 새로운 애플리케이션에 대해서, 키보드나 마우스 입력에 DirectInput 대신에 Windows 메시지 루프를 사용하는 것을 추천합니다(Meltdown 2005 슬라이드[2] 쇼에 표시됨).Xbox 360 컨트롤러에는 DirectInput 대신에 XInput 를 사용하는 것이 좋습니다.

역사

DirectX에는 버전 1.0(1995)부터 DirectInput이 포함되어 있습니다.마우스와 키보드 모듈이 표준 Win32 API에 래퍼만 제공했기 때문에 처음에는 조이스틱에만 진정한 지원을 제공했습니다.DirectX 버전 3.0(1996)에서는 키보드와 마우스 지원이 추가되었으며 조이스틱 지원도 향상되었습니다.DirectX 5.0(1997)은 촉각 피드백 추가, 버튼 수 증가, 기본 장치 드라이버 모델 변경 및 COM 기반 API 통합 등 크게 개선된 조이스틱 지원을 포함했습니다.마우스 지원으로 표시되는 버튼 수도 4개에서 8개로 늘렸습니다.DirectX 7.0(1999-)에서는 DirectInput이 개개의 조이스틱과 같이 개개의 마우스를 표시한다는 오랜 약속의 기능을 추가했지만, 2010년 현재 Windows 98/Me 및 DirectX 9에서는 이 기능이 작동하지 않았습니다.DirectX 8.0(2000)은 주요 변경사항이 있는 마지막 버전입니다.액션 매핑과 다양한 유형의 디바이스에 대한 폭넓은 지원이 포함되어 있습니다.

마이크로소프트는 처음에 DirectInput이 모든 입력을 처리하도록 의도했지만, 이는 잘 되지 않았다.2011년부터 마이크로소프트는 키보드나 마우스에 DirectInput을 사용하는 것을 더 이상 권장하지 않으며 Xbox 360 [3]컨트롤러에 새로운 XInput을 적용하기 시작했습니다.Windows Vista, Windows 7 및 Windows 7 이후의 Windows 버전에서는 기본 제공 작업 매핑 UI가 [4]제거되었습니다.Windows Store 앱에서는 DirectInput을 사용할 수 없습니다.

XInput

"차세대" 컨트롤러를 위한 API인 XInput은 [5]Xbox 360의 출시와 함께 2005년 12월에 소개되었습니다.이 사양은 Windows XP SP1 및 그 이후의 운영 체제에서 Xbox 360 컨트롤러를 지원하며 DirectInput보다 프로그래밍이 쉽고 셋업이 덜 필요한 것으로 Microsoft에 의해 설명되었습니다.XInput은 DirectX 버전 9 이후와 호환됩니다.

Xbox 360 컨트롤러 지원

기본 Microsoft 드라이버가 설치된 Xbox 360 컨트롤러는 XInput과 비교하여 DirectInput에 [6]다음과 같은 제한이 있습니다.

  • 왼쪽 및 오른쪽 트리거는 독립 아날로그 축이 아니라 트리거 간의 부호화된 차이를 나타내는 단일 축으로 작동합니다.
  • 진동 효과가 작동하지 않음
  • 헤드셋 디바이스에 대한 쿼리는 동작하지 않습니다.Windows 8에서 [7]도입된 Xbox 헤드셋의 일부로서 XInput 1.4가 지원되고 있습니다.

MSDN에 따르면 DirectInput의 왼쪽 트리거와 오른쪽 트리거의 조합은 설계상입니다.게임에서는 항상 DirectInput 디바이스 축이 중앙에 위치한다고 가정해 왔습니다.하지만, Xbox360컨트롤럴 때 계기는 held." 자세한 내용은 MSDN은 제공했다"solution"긍정적인 방향의 부정적인 방향에 하나를 트리거로 설정하면 총을 결합하지 않으므로 사용자 상호 작용 DirectInput에 나타낸다"control" 중심에 있는데 받지 않은 것을 있는 최소 가치가 아니라 센터 등록하도록 설계되었다.[8]

그러나 듀얼 아날로그 스틱이 있는 게임 패드레이싱 휠 컨트롤러 세트 등 많은 DirectInput 컨트롤러가 이미 트리거와 페달을 독립적으로 매핑하고 있다는 사실은 무시합니다.또한 많은 DirectInput 디바이스에도 진동 효과가 있습니다.적어도 하나의 서드파티 드라이버인 XBCD는 Xbox 360 컨트롤러에 진동 지원, 데드존 및 XInput 드라이버가 [9]소유한 DirectInput을 통해 (선택적으로) 독립적인 아날로그/디지털 트리거를 제공합니다.이는 마이크로소프트의 Xbox 360 컨트롤러 드라이버가 DirectInput API와 XInput API 간의 차이 때문이 아니라 의도적으로 더 약한 DirectInput 지원을 제공받았음을 시사합니다.반면 XInput을 사용하는 Xbox 360 컨트롤러는 DirectInput을 [12]통해 지원되는 더 큰 효과 팔레트와 대조적으로 진동 모터의[10][11] 매우 기본적인 제어만 지원합니다.

다이렉트 입력과 XInput

XInput에 대한 DirectInput의 장점:

  • XInput은 Microsoft Xbox 콘솔과 함께 작동하는 컨트롤러만 지원합니다.
  • XInput은 한 번에 최대 4개의 컨트롤러를 지원합니다.DirectInput에는 이러한 제한이 없습니다.
  • XInput은 키보드, 마우스 또는 마우스 유형의 디바이스를 지원하지 않습니다.이것은 이러한 디바이스에서 [13]DirectInput을 사용하지 말라는 Microsoft의 권고를 반영한 것이지만 프로그래머는 이러한 디바이스에서 DirectInput을 사용할 수 있습니다.
  • DirectInput은 8축, 128개의 버튼 및 풀레인지 POV를 지원하는 데 비해 XInput은 컨트롤러당 최대 4축, 10개의 버튼, 2개의 트리거 및 8방향 디지털 패드를 지원합니다(Xbox 360 컨트롤러에 직접 대응하는 축, 버튼 및 트리거 수).

다이렉트 입력에 비해 XInput의 장점:

  • 현재 Microsoft에서 지원

레퍼런스

  1. ^ "DirectInput".
  2. ^ "Meltdown 2005 slideshow (.zip)". Archived from the original on 2015-05-21. Retrieved 2012-11-13.{{cite web}}: CS1 maint: bot: 원래 URL 상태를 알 수 없습니다(링크).
  3. ^ "Taking Advantage of High-Definition Mouse Movement". MSDN. Microsoft. Retrieved 2009-01-25.
  4. ^ "DirectInput ConfigureDevices in Windows Vista". 2008-12-27. Archived from the original on December 27, 2008. Retrieved 2012-11-13.
  5. ^ "Comparison of XInput and DirectInput features - Win32 apps Microsoft Docs".
  6. ^ "Comparison of XInput and DirectInput features - Win32 apps Microsoft Docs".
  7. ^ "XInputGetAudioDeviceIds function". MSDN. Retrieved 10 December 2013.
  8. ^ "XInput and DirectInput". Microsoft. 2012-09-17. Retrieved 2012-12-27.
  9. ^ "DirectInput ConfigureDevices in Windows Vista". Archived from the original on April 25, 2011. Retrieved 2020-07-17.
  10. ^ "Gamepad - Rumbler Control". Free60 Project. Archived from the original on 2009-03-13. Retrieved 2009-01-25.
  11. ^ "XINPUT_VIBRATION". Msdn.microsoft.com. Retrieved 2009-01-25.
  12. ^ "DIEFFECT". MSDN. Microsoft. Retrieved 2009-01-25.
  13. ^ "DirectInput". MSDN. Microsoft. Retrieved 2010-05-30.

외부 링크