我已经失去了一些时间试图为我的应用程序使用SDL获得操纵杆支持,主要是因为初始化步骤,其中:
SDL_Init(SDL_INIT_JOYSTICK|SDL_INIT_VIDEO);
SDL_JoystickEventState(SDL_ENABLE);
Run Code Online (Sandbox Code Playgroud)
如果我刚刚初始化操纵杆,它就无法工作,它需要与视频一起完成.我希望这是非常简约的,所以很高兴知道是否有办法初始化操纵杆.如果没有,有人可以告诉我是否有任何不利于初始化视频并且从不使用它?
我在这里使用Ubuntu,但我希望这可以在各种平台上运行.这种行为在不同环境中有所不同吗?
谢谢 :)
在开发一个带有joypad输入的小型CLI应用程序时,我遇到了类似的问题.基本上,没有SDL_INIT_VIDEO它就无法工作,因为SDL事件系统源于视频驱动程序,至少在Linux(X11)上.
在没有创建窗口的情况下初始化视频是完全正常的(它至少可以工作).我已经在Win32和Linux上测试了这种方法,所以它似乎也可以在多平台上运行.
小智 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);
}
Run Code Online (Sandbox Code Playgroud)