Использование 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);
}