Использование SDL INIT джойстик без SDL INIT видео
Я потерял некоторое время, пытаясь получить поддержку джойстика для моего приложения с помощью SDL, в основном потому, что шаги инициализации, где это:
SDL_Init(SDL_INIT_JOYSTICK|SDL_INIT_VIDEO);
SDL_JoystickEventState(SDL_ENABLE);
это не сработало, если я просто инициализировал джойстик, это нужно было сделать вместе с видео. Я хочу, чтобы это было очень минималистично, поэтому было бы неплохо узнать, есть ли способ инициализировать только джойстик. Если нет, Может ли кто-нибудь сказать мне, есть ли какой-либо недостаток в инициализации видео и никогда не использовать это?
Я на Ubuntu здесь, но я ожидаю, что это будет работать на разных платформах. Различается ли такое поведение в различных средах?
спасибо :)
2 ответов
У меня были аналогичные проблемы при разработке небольшого приложения CLI, которое приняло ввод joypad. В принципе, он не работал без SDL_INIT_VIDEO, потому что система событий SDLs происходит от видеодрайвера, по крайней мере, на Linux (X11).
Это прекрасно, чтобы init видео без создания окна (он работает, по крайней мере). Я тестировал этот подход как на Win32, так и на Linux, поэтому он, похоже, работает отлично.
У меня аналогичная проблема, я решил ее, не используя цикл событий. Вместо этого я вручную обновляю джойстики, а затем использую функции 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);
}