6

我已经失去了一些时间来尝试使用 SDL 为我的应用程序获得操纵杆支持,主要是因为这些初始化步骤:

SDL_Init(SDL_INIT_JOYSTICK|SDL_INIT_VIDEO);
SDL_JoystickEventState(SDL_ENABLE);

刚初始化摇杆不行,需要和视频一起做。我希望这是非常简约的,所以很高兴知道是否有办法只初始化操纵杆。如果没有,有人可以告诉我初始化视频并且从不使用它是否有任何缺点?

我在这里使用 Ubuntu,但我希望它可以在各种平台上运行。这种行为在不同的环境中会有所不同吗?

谢谢 :)

4

2 回答 2

7

在开发一个接受手柄输入的小型 CLI 应用程序时,我遇到了类似的问题。基本上,如果没有 SDL_INIT_VIDEO,它就无法工作,因为 SDL 事件系统源于视频驱动程序,至少在 Linux (X11) 上是这样。

无需创建窗口就可以启动视频(至少可以正常工作)。我已经在 Win32 和 Linux 上测试过这种方法,所以它似乎在多平台上也能正常工作。

于 2011-02-03T22:50:17.790 回答
5

我有一个类似的问题,我通过不使用事件循环来解决它。相反,我手动更新操纵杆,然后使用 SDL 函数检查操纵杆。

SDL_Init(SDL_INIT_JOYSTICK);
SDL_JoystickEventState(SDL_DISABLE);
joystick = SDL_JoystickOpen(0);
SDL_Joystick* joystick;
while(true)
{
    SDL_JoystickUpdate();
    SDL_JoystickGetAxis(joystick, 0);
}
于 2014-02-05T03:42:07.030 回答