我已经失去了一些时间尝试使用SDL为我的应用程序获得操纵杆支持,主要是因为初始化步骤在哪里:
SDL_Init(SDL_INIT_JOYSTICK|SDL_INIT_VIDEO);
SDL_JoystickEventState(SDL_ENABLE);
如果我刚刚初始化了操纵杆,它就无法工作,需要与视频一起完成。我希望这是非常简约的,所以很高兴知道是否有办法初始化操纵杆。如果没有,有人可以告诉我是否有任何不利于初始化视频并且从不使用它?
我在这里使用Ubuntu,但我希望这可以在各种平台上运行。这种行为在不同环境中是否有所不同?
谢谢:)
答案 0 :(得分:7)
在开发一个使用joypad输入的小型CLI应用程序时,我遇到了类似的问题。基本上,没有SDL_INIT_VIDEO它没有用,因为SDL事件系统源于视频驱动程序,至少在Linux(X11)上。
在没有创建窗口的情况下初始化视频是完全没问题的(至少可以工作)。我已经在Win32和Linux上测试了这种方法,所以它似乎也可以很好地工作。
答案 1 :(得分:3)
我有类似的问题,我通过不使用事件循环解决了它。相反,我手动更新操纵杆,然后使用SDL功能检查操纵杆。 p>
SDL_Init(SDL_INIT_JOYSTICK);
SDL_JoystickEventState(SDL_DISABLE);
joystick = SDL_JoystickOpen(0);
SDL_Joystick* joystick;
while(true)
{
SDL_JoystickUpdate();
SDL_JoystickGetAxis(joystick, 0);
}