2011-02-03 11 views
6

Straciłem trochę czasu próbuje uzyskać wsparcie joysticka dla mojej aplikacji przy użyciu SDL, głównie dlatego, że te kroki inicjalizacji gdzie:Korzystanie SDL_INIT_JOYSTICK bez SDL_INIT_VIDEO

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

To nie działa, jeśli tylko zainicjowaniu joysticka, trzeba to było zrobić razem z wideo. Chcę, żeby było to bardzo minimalistyczne, więc byłoby miło wiedzieć, czy istnieje sposób na zainicjowanie tylko joysticka. Jeśli nie, czy ktoś może mi powiedzieć, czy jest jakaś wada inicjowania wideo i nigdy go nie używa?

Jestem na Ubuntu tutaj, ale spodziewam się, że będzie działać na różnych platformach. Czy to zachowanie może się różnić w różnych środowiskach?

Dzięki :)

Odpowiedz

7

miałem problemy podobne przy opracowywaniu małą aplikację CLI, które miały wkład joypada. Zasadniczo nie działało bez SDL_INIT_VIDEO, ponieważ system zdarzeń SDLs pochodzi ze sterownika wideo, przynajmniej w systemie Linux (X11).

Jest całkowicie w porządku, aby rozpocząć wideo bez tworzenia okna (przynajmniej działa). Testowałem to podejście zarówno w systemach Win32, jak i Linux, więc wygląda na to, że działa dobrze także w wersji wieloplatformowej.

+0

Próbuję tego na windows7 i wydaje się, że to nie jest prawda. Wyłączenie SDL_CreateWindow powoduje, że pętla zdarzeń jest wyzwalana przez przyciski, ale nie na analogowych paskach Logitech Gamepad. Z utworzonym oknem działa dobrze. – user505160

3

Mam podobny problem, rozwiązałem go, nie używając pętli zdarzeń. Zamiast tego ręcznie aktualizuję joysticki, a następnie wykorzystuję funkcje SDL do sprawdzania joysticków.

SDL_Init(SDL_INIT_JOYSTICK); 
SDL_JoystickEventState(SDL_DISABLE); 
joystick = SDL_JoystickOpen(0); 
SDL_Joystick* joystick; 
while(true) 
{ 
    SDL_JoystickUpdate(); 
    SDL_JoystickGetAxis(joystick, 0); 
} 
Powiązane problemy