Почему SDL_HapticOpenFromJoystick () не работает в SDL 2

Я работаю над игрой, которая будет использовать SDL 2.0.3 для большей части внутреннего кода (рендеринга, событий, игровых контроллеров и т. Д.). До сих пор я был в состоянии выяснить большинство своих проблем, но эта проблема, кажется, не имеет много информации об этом.

Поэтому моя проблема в том, что я пытаюсь открыть контроллер Xbox 360 для ввода и обратной связи по вибрации. Я получил ввод для правильной работы, но когда я пытаюсь использовать SDL_HapticOpenFromJoystick() открыть устройство для вибрации, он выходит из строя и SDL_GetError() говорит "Haptic: There are 0 haptic devices availible". И то и другое SDL_NumHaptics() а также SDL_JoystickIsHaptic() вернуть 0. Я использую SDL_Init(SDL_INIT_EVERYTHING); инициализировать.

Я знаю, что сам контроллер Xbox 360 может вибрировать, поскольку у меня на ноутбуке с Windows 8 есть игры (не записанные с SDL), которые могут без проблем использовать функцию обратной связи в контроллере.

Если потребуется дополнительная информация, я был бы рад предоставить ее.

Relavant Code:

SDL_GameController *myController = NULL;
SDL_Haptic *myHaptic = NULL;

...
[Begin Basic SDL Event Loop]
...

case SDL_CONTROLLERDEVICEADDED:
if(!myController)
{
myController = SDL_GameControllerOpen(e.cdevice.which);
debugOut("Controller Connected");
myHaptic = SDL_HapticOpenFromJoystick(SDL_GameControllerGetJoystick(myController));
if(myHaptic)
{
debugOut("Haptic Device (i.e. Rumble) Opened");
}
else
{
debugOut("Error in opening Haptic Device (i.e. Rumble)");
debugOut(SDL_GetError());
std::cout << "Number of Haptic Devices: " << SDL_NumHaptics() << std::endl;
std::cout << "Controller is Haptic?: " << SDL_JoystickIsHaptic(SDL_GameControllerGetJoystick(myController)) << std::endl;
}
}
else
{
debugOut("There is already a controller connected, only one allowed right now...");
}
break;

РЕДАКТИРОВАТЬ: я, вероятно, должен добавить, что я использую Visual Studio Express 2012 …

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]