2011-02-03 6 views
6

Ho perso un po 'di tempo cercando di ottenere supporto per il joystick per la mia un'applicazione che utilizza SDL, soprattutto perché le fasi di inizializzazione in cui questi:Utilizzando SDL_INIT_JOYSTICK senza SDL_INIT_VIDEO

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

Non ha funzionato se ho appena inizializzato il joystick, doveva essere fatto insieme al video. Voglio che questo sia molto minimalista, quindi sarebbe bello sapere se c'è un modo per inizializzare solo il joystick. In caso contrario, qualcuno può dirmi se c'è qualche svantaggio di inizializzare il video e non usarlo mai?

Sono su Ubuntu qui, ma mi aspetto che venga eseguito su varie piattaforme. Questo comportamento varia in ambienti diversi?

Grazie :)

risposta

7

ho avuto problemi la classica quando si sviluppa una piccola applicazione CLI che ha preso di ingresso joypad. In sostanza, non ha funzionato senza SDL_INIT_VIDEO perché il sistema di eventi SDL deriva dal driver video, almeno su Linux (X11).

È perfetto per avviare il video senza mai creare una finestra (funziona almeno). Ho provato questo approccio sia su Win32 e Linux, in modo che sembra funzionare multipiattaforma bene pure.

+0

Sto provando questo su Windows7 e sembra che questo non sia vero. Disattivando SDL_CreateWindow, il loop degli eventi viene attivato da pulsanti ma non stick analogici su Logitech Gamepad. Con la finestra creata funziona bene. – user505160

3

Ho un problema simile, l'ho risolto non utilizzando il ciclo degli eventi. Invece aggiorno manualmente i joystick e quindi utilizzare le funzioni SDL per controllare i joystick.

SDL_Init(SDL_INIT_JOYSTICK); 
SDL_JoystickEventState(SDL_DISABLE); 
joystick = SDL_JoystickOpen(0); 
SDL_Joystick* joystick; 
while(true) 
{ 
    SDL_JoystickUpdate(); 
    SDL_JoystickGetAxis(joystick, 0); 
} 
Problemi correlati