Допустим для игры в жанре платформера нужно сделать поддержку джойстика, какой он будет вопрос.
Имеем:
- DirectInput
- XInputGetState()
- joyGetPos()
- Что-то ещё...
В чём плюсы и минусы каждого способа?
Хаус
DirectInput считается Deprecated ещё с момента выхода Windows Vista, т.е. уже больше 10 лет, теперь Майкрософт рекомендует использовать Raw Input для клаво-мыши и XInput для гейпадов XBox. Обленившиеся программисты визжат, кусаются, но продолжают использовать DeprecatedInput. XInput считается самым простым и правильным способом опроса гейпадов XBox. Но это монополия Майкрософт, поэтому я пошёл более сложным путём и всё управление посадил на Raw Input и теперь могу юзать ещё и гейпады DualShock, которые очень популярны среди пользователей ПК, имеющих ещё и Playstation, а таких немало. Ну а про joystickapi (joyGetPos) даже не слышал, видимо не самый популярный способ.
SDL
Dimich
> SDL
Если человек пишет движок на API, фреймворк для опроса устройств ввода ему в [цензура] не упёрся ))) а что там, кстати, сам SDL-то использует для опроса управления = не устаревший ли DInput???
DirectInput геймпады уже и в магазинах не продаются, поэтому выбор очевиден (но поддержку старых геймпадов было сделать просто актом вежливости). Если говорить про всякие рули/штурвалы - там ещё и не такое дерьмо мамонта может быть, поэтому нужно смотреть конкретные девайсы (не дешёвые, кстати) и делать их поддержку, иначе какашками закидают.
0iStalker
> DirectInput геймпады уже и в магазинах не продаются, поэтому выбор очевиден
А какие гейпады? Я на XBox 360 играю в старые эмуляторы, там однозначно DirectInput :)
Со временем для тестирования движка хочу приобрести XBox One Elite и DualShock 4, заодно и погоняю их на этих эмулях...
К слову скажу = я не знаю, что используют для опроса устройств ввода в Скайриме, но управление периодически отваливается, раньше даже не убирался Windows-курсор и постоянно гонял по экрану при движениях мышью. Складывается такое впечатление, что даже такие шедевры делают какие-то дилетанты...
Daniil Petrov
> XBox
Daniil Petrov
> DirectInput
Ясно! XInput же
0iStalker
> XInput же
Не поленился, глянул зависимости, у одного DInput, у других ничего, но никакого XInput!
Тем более, что DInput гейпады никогда и не поддерживали, у них всегда был один и тот же интерфейс, который уже юзали DInput и прочие API.
Dimich
> SDL
+1
Особенно, если смотришь дальше одной платформы.
Dimich
> SDL
Там над каким API обёртка?
Хаус
> Там над каким API обёртка?
Пробежался простым поиском функций по файлам, получилось следующее: Raw Input там отсутствует, присутствует XInput и непонятно на счёт DInput = поиск по файлам вроде ловит наличие «dinput», а поиск в самих файлах ничего не даёт, в общем как-то так...
Хаус
Скачай DirectX SDK June 2010, там есть пример использования XInput, если не заморачиваться на вибрации, то там всего несколько строчек кода, если с вибрацией, то немного больше. Если у тебя прямые руки, то это более правильный способ, нежели прикручивать фреймворк, если ты не используешь его для всех остальных систем движка, которые он предоставляет.
Хаус
Raw input.
nes
> Raw input.
Аргументы?
Daniil Petrov
> XInput
Я так понимаю он заточен под геймпады от XBox, для ДуалШока он годится, а для ноунеймов?
XInput работает с любым устройством от слова вообще: Gamepad , Joystick , многокнопочная мышь , руль , и т.д. для которого установлен драйвер в Windows. т.е. у вас не будет проблем с любой кнопкой или аналоговым регулятором на устройстве.
пример использования библиотеки
Вся болтовня про Depricated о DirectInput или XInput - просто болтовня.
Тема в архиве.