ДиректИнпут
В вычислениях DirectInput — это наследие [1] Microsoft API для сбора входных данных от пользователя компьютера через устройства ввода , такие как мышь , клавиатура или геймпад . Он также предоставляет систему сопоставления действий, которая позволяет пользователю назначать определенные действия в игре кнопкам и осям устройств ввода. Кроме того, он обрабатывает устройства тактильной обратной связи (ввода/вывода). Microsoft представила новую библиотеку ввода под названием XInput специально для контроллера Xbox 360 .
DirectInput и XInput предоставляют преимущества по сравнению с обычными событиями ввода Win32:
- они позволяют приложению получать данные с устройств ввода, даже когда приложение находится в фоновом режиме.
- они обеспечивают полную поддержку любого типа устройств ввода, а также тактильную обратную связь
- посредством сопоставления действий приложения могут получать входные данные, не зная, какое устройство сгенерировало эти входные данные.
Хотя DirectInput является частью библиотеки DirectX , он не подвергался значительным изменениям со времен DirectX 8 (2001–2002 гг.). Microsoft рекомендует новым приложениям использовать цикл сообщений Windows для ввода с клавиатуры и мыши вместо DirectInput (как указано в слайд-шоу Meltdown 2005). [2] ), а также использовать GameInput вместо DirectInput и других устаревших API, таких как XInput, для контроллеров. [3]
История
[ редактировать ]DirectX включал DirectInput версии 1.0 (1995 г.). Первоначально он предлагал настоящую поддержку только для джойстиков, поскольку модули мыши и клавиатуры просто предоставляли обертки для стандартного Win32 API . В DirectX версии 3.0 (1996 г.) добавлена поддержка клавиатур и мышей; также улучшена поддержка джойстика. DirectX 5.0 (1997) включал значительно улучшенную поддержку джойстиков, включая добавление тактильной обратной связи, увеличение количества кнопок, изменение базовой модели драйверов устройств и включение COM на основе API . Поддержка мыши также увеличила количество видимых кнопок с четырех до восьми. В DirectX 7.0 (1999-) DirectInput добавил давно обещанную функцию просмотра отдельных мышей, очень похожую на отдельные джойстики, но эта функция не работала с более поздней выпущенной Windows XP , хотя по состоянию на 2010 г. [update] он работает с Windows 98/Me и DirectX 9. DirectX 8.0 (2000), последняя версия с серьезными изменениями, включала отображение действий и более широкую поддержку различных типов устройств.
Хотя изначально Microsoft предполагала, что DirectInput будет обрабатывать все входные данные, это не сработало. По состоянию на 2011 год [update] Microsoft больше не рекомендует использовать DirectInput для клавиатур и мышей и начала продвигать новый XInput для контроллеров Xbox 360. [4] В Windows Vista , Windows 7 и более поздних версиях Windows встроенный пользовательский интерфейс сопоставления действий был удален. [5] DirectInput недоступен для приложений Магазина Windows.
XInput
[ редактировать ]XInput, [6] наследие [7] API для контроллеров «следующего поколения» был представлен в декабре 2005 года одновременно с выпуском Xbox 360 . Эта спецификация обеспечивала поддержку контроллеров Xbox 360 в Windows XP SP1 и последующих операционных системах, и Microsoft описывает ее как более простую в программировании и требующую меньше настроек, чем DirectInput. XInput совместим с DirectX версии 9 и более поздних версий.
Поддержка контроллера Xbox 360
[ редактировать ]Контроллер Xbox 360 с драйвером Microsoft по умолчанию имеет следующие ограничения DirectInput по сравнению с XInput: [8]
- левый и правый триггеры будут действовать как одна ось, представляющая разность знаков между триггерами, а не как независимая аналоговая ось.
- эффекты вибрации не будут работать
- запрос устройств гарнитуры не будет работать, в XInput 1.4 в составе Windows 8 появилась поддержка гарнитуры Xbox. [9]
Согласно MSDN , «комбинация левого и правого триггеров в DirectInput разработана специально. В играх всегда предполагалось, что оси устройства DirectInput центрируются, когда нет взаимодействия пользователя с устройством. Однако контроллер Xbox 360 был разработан для регистрации минимального значение, а не центр, когда триггеры не удерживаются». MSDN предложила «решение» объединения триггеров, установив один триггер в положительное направление, а другой в отрицательное, поэтому никакое взаимодействие с пользователем не указывает на DirectInput, когда «элемент управления» находится в центре. [10]
Однако вышеизложенное игнорирует тот факт, что многие контроллеры DirectInput, такие как геймпады с двумя аналоговыми джойстиками и наборы контроллеров гоночных рулей , уже отображают триггеры и педали независимо. Кроме того, многие устройства DirectInput обладают эффектом вибрации. По крайней мере, один сторонний драйвер, XBCD, обеспечивает контроллерам Xbox 360 поддержку вибрации, мертвые зоны и (опционально) независимые аналоговые/цифровые триггеры через DirectInput, которыми обладает его драйвер XInput. [11] Это говорит о том, что драйвер контроллера Microsoft Xbox 360 намеренно получил более слабую поддержку DirectInput, а не из-за каких-либо различий между API DirectInput и XInput. С другой стороны, контроллеры Xbox 360, использующие XInput, поддерживают только базовое управление вибромоторами. [12] [13] в отличие от большей палитры эффектов, поддерживаемых через DirectInput. [14]
Ссылки
[ редактировать ]- ^ «ДиректВвод» .
- ^ «Слайд-шоу Meltdown 2005 (.zip)» . Архивировано из оригинала 21 мая 2015 г. Проверено 13 ноября 2012 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ «Обзор GameInput» . п. Введение в GameInput, «Начало работы».
GameInput — рекомендуемый API для всего нового кода, независимо от целевой платформы, поскольку он обеспечивает поддержку на всех платформах Microsoft (включая более ранние версии Windows) и обеспечивает превосходную производительность по сравнению с устаревшими API.
- ^ «Использование преимуществ движения мыши высокой четкости» . MSDN . Майкрософт . Проверено 25 января 2009 г.
- ^ «DirectInput ConfigurationDevices в Windows Vista» . 27 декабря 2008 г. Архивировано из оригинала 27 декабря 2008 года . Проверено 13 ноября 2012 г.
- ^ «Сравнение функций XInput и DirectInput — приложения Win32 | Microsoft Docs» .
- ^ «Обзор GameInput» .
- ^ «Сравнение функций XInput и DirectInput — приложения Win32 | Microsoft Docs» .
- ^ «Функция XInputGetAudioDeviceIds» . MSDN . Проверено 10 декабря 2013 г.
- ^ «XInput и DirectInput» . Майкрософт. 17 сентября 2012 г. Проверено 27 декабря 2012 г.
- ^ «DirectInput ConfigurationDevices в Windows Vista» . Архивировано из оригинала 25 апреля 2011 года . Проверено 17 июля 2020 г.
- ^ «Геймпад — Управление Громошницей» . Проект Free60. Архивировано из оригинала 13 марта 2009 г. Проверено 25 января 2009 г.
- ^ "XINPUT_VIBRATION" . Msdn.microsoft.com . Проверено 25 января 2009 г.
- ^ «ДИЭФФЕКТ» . MSDN . Майкрософт . Проверено 25 января 2009 г.