Использование SDL_INIT_JOYSTICK без SDL_INIT_VIDEO - PullRequest
6 голосов
/ 03 февраля 2011

Я потерял некоторое время, пытаясь получить поддержку джойстика для моего приложения, использующего SDL, в основном из-за шагов инициализации, где они:

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

Это не сработало, если я просто инициализировал джойстик,это нужно было сделать вместе с видео.Я хочу, чтобы это было очень минималистично, поэтому было бы неплохо узнать, есть ли способ инициализировать только джойстик.Если нет, может кто-нибудь сказать мне, есть ли какой-либо недостаток в инициализации видео и никогда его не использовать?

Я нахожусь на Ubuntu здесь, но я ожидаю, что это будет работать на различных платформах.Отличается ли это поведение в разных средах?

Спасибо:)

Ответы [ 2 ]

7 голосов
/ 04 февраля 2011

У меня были похожие проблемы при разработке небольшого CLI-приложения, в которое входил джойстик.По сути, он не работал без SDL_INIT_VIDEO, потому что система событий SDL основана на видеодрайвере, по крайней мере, в Linux (X11).

Прекрасно начинать видео, даже не создавая окна (это работает по крайней мере).Я протестировал этот подход как на Win32, так и на Linux, поэтому, похоже, он отлично работает и на мультиплатформенности.

3 голосов
/ 05 февраля 2014

У меня похожая проблема, я решил ее, не используя цикл обработки событий.Вместо этого я вручную обновляю джойстики, а затем использую функции 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);
}
...