SDL2 - 没有检测到操纵杆?

时间:2014-06-20 01:54:43

标签: c++ c sdl sdl-2 joystick

所以,我试图学习如何使用SDL2操纵杆,并且我正在学习LazyFoo的教程(Gamepads and Joysticks),但我一定在做有问题,因为我的程序无法检测到我的控制器!

Windows检测到它(我使用Windos 7和无线Xbox 360控制器)和LazyFoo的示例(我从上面的链接下载)也检测到我的控制器!

我搜索并尝试了一些东西,但我尝试的任何东西似乎都没有用......

这是我的初选:

if (SDL_Init(SDL_INIT_EVERYTHING) < 0){
    cout << "Error initializing SDL!" << endl;
    return 1;
}

这个部分位于我的Input类的构造函数中,它应该是&#34; start&#34;操纵杆(并且还检测来自keyborad的事件):

if (SDL_NumJoysticks() < 1){
    cout << "No joystick detected." << endl;
}
else{
    controller = SDL_JoystickOpen(0);
    if (controller == NULL){
        cout << "Error: Unable to open Joystick." << endl;
    }
    else{
        isUsingJoystick = true;
    }
}

我也尝试在初始化SDL_JoystickEventState(SDL_ENABLE)之后使用SDL_JoystickUpdate(),但它确实有效...

我忘了什么?

如果你们想要,我可以使用我的输入类的代码编辑帖子......

编辑:我忘了说,即使我的控制器连接了所有内容,SDL_NumJoysticks()也会返回0 ...

1 个答案:

答案 0 :(得分:2)

我弄清楚我做错了什么。事实证明我在初始化SDL之前试图打开我的操纵杆(我在我的Input类的构造函数中打开了我的操纵杆,但我正在创建我的Input类的唯一实例在SDL_INIT_EVERYTHING之前。)

我认为只有用我写的信息才能发现这个,所以很抱歉打扰。