Jump to content

ДиректИнпут

В вычислениях 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 г. он работает с Windows 98/Me и DirectX 9. DirectX 8.0 (2000), последняя версия с серьезными изменениями, включала отображение действий и более широкую поддержку различных типов устройств.

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

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]

  1. ^ «ДиректВвод» .
  2. ^ «Слайд-шоу Meltdown 2005 (.zip)» . Архивировано из оригинала 21 мая 2015 г. Проверено 13 ноября 2012 г. {{cite web}}: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
  3. ^ «Обзор GameInput» . п. Введение в GameInput, «Начало работы». GameInput — рекомендуемый API для всего нового кода, независимо от целевой платформы, поскольку он обеспечивает поддержку на всех платформах Microsoft (включая более ранние версии Windows) и обеспечивает превосходную производительность по сравнению с устаревшими API.
  4. ^ «Использование преимуществ движения мыши высокой четкости» . MSDN . Майкрософт . Проверено 25 января 2009 г.
  5. ^ «DirectInput ConfigurationDevices в Windows Vista» . 27 декабря 2008 г. Архивировано из оригинала 27 декабря 2008 года . Проверено 13 ноября 2012 г.
  6. ^ «Сравнение функций XInput и DirectInput — приложения Win32 | Microsoft Docs» .
  7. ^ «Обзор GameInput» .
  8. ^ «Сравнение функций XInput и DirectInput — приложения Win32 | Microsoft Docs» .
  9. ^ «Функция XInputGetAudioDeviceIds» . MSDN . Проверено 10 декабря 2013 г.
  10. ^ «XInput и DirectInput» . Майкрософт. 17 сентября 2012 г. Проверено 27 декабря 2012 г.
  11. ^ «DirectInput ConfigurationDevices в Windows Vista» . Архивировано из оригинала 25 апреля 2011 года . Проверено 17 июля 2020 г.
  12. ^ «Геймпад — Управление Громошницей» . Проект Free60. Архивировано из оригинала 13 марта 2009 г. Проверено 25 января 2009 г.
  13. ^ "XINPUT_VIBRATION" . Msdn.microsoft.com . Проверено 25 января 2009 г.
  14. ^ «ДИЭФФЕКТ» . MSDN . Майкрософт . Проверено 25 января 2009 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f28cf5ef3e32092401585c3358f0ecb1__1704197040
URL1:https://arc.ask3.ru/arc/aa/f2/b1/f28cf5ef3e32092401585c3358f0ecb1.html
Заголовок, (Title) документа по адресу, URL1:
DirectInput - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)