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 编写的),可以毫无问题地使用控制器中的力反馈功能。

如果需要更多信息,我很乐意提供。

相关代码:

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 ......

4

0 回答 0