DirectInput

редактировать
Microsoft API

В вычислениях DirectInput является устаревшим Microsoft API для сбора данных от пользователя компьютера через устройства ввода, такие как мышь, клавиатура или геймпад. Он также предоставляет систему сопоставления действий, которая позволяет пользователю назначать определенные действия в игре кнопкам и осям устройств ввода. Кроме того, он обрабатывает устройства тактильной обратной связи (ввод / вывод). Microsoft представила новую библиотеку ввода под названием XInput специально для контроллера Xbox 360.

DirectInput и XInput обеспечивают преимущества по сравнению с обычными событиями ввода Win32:

  • они позволяют приложению получать данные с устройств ввода, даже когда приложение находится в фон
  • они обеспечивают полную поддержку любого типа устройства ввода, а также для тактильной обратной связи
  • через отображение действий, приложения могут извлекать входные данные без необходимости знать, какое устройство сгенерировало эти input

Хотя DirectInput является частью библиотеки DirectX, со времени DirectX 8 (2001–2002 гг.) он не подвергался значительным изменениям. Microsoft рекомендует в новых приложениях использовать цикл сообщений Windows для ввода с клавиатуры и мыши вместо DirectInput (как указано в слайд-шоу Meltdown 2005) и использовать XInput вместо DirectInput для контроллеров Xbox 360.

Содержание

  • 1 История
  • 2 XInput
  • 3 Поддержка контроллера Xbox 360
  • 4 DirectInput и XInput
  • 5 Ссылки
  • 6 Внешние ссылки

История

DirectX включает DirectInput версии 1.0 (1995 г.). Первоначально он предлагал настоящую поддержку только для джойстиков, поскольку модули мыши и клавиатуры просто предоставляли оболочки для стандартного Win32 API. В DirectX версии 3.0 (1996 г.) добавлена ​​поддержка клавиатур и мышей; также улучшена поддержка джойстика. DirectX 5.0 (1997) включал значительно улучшенную поддержку джойстика, включая добавление тактильной обратной связи, увеличение количества кнопок, изменение базовой модели драйвера устройства и включение API на основе COM. Поддержка мыши также увеличила количество видимых кнопок с четырех до восьми. В DirectX 7.0 (с 1999 г. по настоящее время) в DirectInput была добавлена ​​давно обещанная функция просмотра отдельных мышей, очень похожая на отдельные джойстики, но эта функция не работала с более поздней версией Windows XP, хотя по состоянию на 2010 г. работает с Windows 98 / Me и DirectX 9. DirectX 8.0 (2000), последняя версия с существенными изменениями, включает отображение действий и более широкую поддержку для различных типов устройств.

Хотя изначально Microsoft предполагала, что DirectInput будет обрабатывать все входные данные, этого не произошло. С 2011 года Microsoft не рекомендует использовать DirectInput для клавиатур или мышей и начала продвигать новый XInput для контроллеров Xbox 360. В Windows Vista, Windows 7 и более поздних версиях Windows встроенный пользовательский интерфейс сопоставления действий был удален. DirectInput недоступен для приложений Магазина Windows.

XInput

XInput, API для контроллеров «следующего поколения», был представлен в декабре 2005 года одновременно с выпуском Xbox 360. Этот набор инструкций обеспечивает полную поддержку контроллеров Xbox 360 в Windows XP SP1 и последующих операционных системах и описывается Microsoft как более простой в программировании и требующий меньше настроек, чем DirectInput. XInput совместим с DirectX версии 9 и новее.

Поддержка контроллера Xbox 360

Контроллер Xbox 360 с драйвером Microsoft по умолчанию имеет следующие ограничения с DirectInput по сравнению с XInput:

  • левый и правые триггеры будут действовать как одна ось, представляющая разность со знаком между триггерами, а не как независимые аналоговые оси
  • эффекты вибрации не будут работать
  • запросы на устройства гарнитуры не будут работать

Ни один из эти ограничения существуют при использовании контроллера Xbox 360 с XInput.

Эффекты вибрации не будут работать на контроллере Xbox One.

Согласно MSDN, "Комбинация левого и правого триггеров в DirectInput разработана специально. Игры всегда предполагали, что оси устройства DirectInput центрированы, когда пользователь не взаимодействует с устройством. Однако контроллер Xbox 360 был разработан для регистрации минимального значения, а не центра, когда триггеры не удерживаются ". MSDN предложила «решение» комбинирования триггеров, установив один триггер в положительном направлении, а другой в отрицательном направлении, так что никакое взаимодействие с пользователем не указывает на то, что DirectInput «элемент управления» находится в центре.

Однако выше игнорируется тот факт, что многие контроллеры DirectInput, такие как геймпады с двумя аналоговыми джойстиками и наборы контроллеров racing-wheel, уже отображают триггеры и педали независимо. Кроме того, многие устройства DirectInput также имеют эффекты вибрации. По крайней мере, один драйвер, XBCD, дает контроллерам Xbox 360 поддержку вибрации, мертвые зоны и (необязательно) независимые триггеры через DirectInput. Это говорит о том, что драйвер контроллера Microsoft Xbox 360 намеренно имеет более слабую поддержку DirectInput, а не из-за каких-либо различий между API DirectInput и XInput. С другой стороны, контроллер Xbox 360 и XInput поддерживают только базовое управление вибрационными двигателями, в отличие от большой палитры различных эффектов, поддерживаемых DirectInput.

DirectInput против XInput

Microsoft не сделала никаких основные изменения в DirectInput со времен DirectX 8 и представленный XInput позже в DirectX 9: остается некоторая путаница в отношении текущего статуса и будущего двух API.

API XInput с 2010 года также имеет ограничения, которых нет в DirectInput:

  • XInput поддерживает только контроллеры «следующего поколения». Это ограничивает его в основном контроллерами для Xbox 360, которые также имеют драйверы Windows. Устаревшие контроллеры Windows, джойстики и универсальные устройства тактильной обратной связи не поддерживаются.
  • XInput поддерживает максимум четыре контроллера одновременно. Это ограничение Xbox, перенесенное на Windows. Хотя по состоянию на 2010 год для немногих компьютерных игр требуется более четырех контроллеров одновременно, DirectInput не имеет такого ограничения.
  • XInput не поддерживает клавиатуры, мыши или устройства типа мыши. Хотя это отражает рекомендацию Microsoft не использовать DirectInput с этими устройствами, программисты могут использовать DirectInput с этими устройствами.
  • XInput поддерживает максимум 4 оси, 10 кнопок, 2 триггера и цифровую панель с 8 направлениями на контроллер, по сравнению с DirectInput поддерживает 8 осей, 128 кнопок и полнодиапазонный POV. (Количество осей, кнопок и триггеров, которые поддерживает XInput, соответствует непосредственно контроллеру Xbox 360.)

Преимущество XInput перед DirectInput:

  • При использовании с контроллером Xbox 360 левый и правый триггерные кнопки будут действовать независимо, а не как одна кнопка.

С 2011 года XInput предназначен для контроллеров Xbox 360, а DirectInput - для любого контроллера. В XInput 1.4, представленной в Windows 8, была повторно введена поддержка запросов к устройствам гарнитуры.

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-17 08:13:53
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте