2011-02-03 15 views
6

SDL kullanan bir uygulamam için joystick desteğini almaya çalışırken zaman kaybetmem, çoğunlukla başlangıç ​​aşamaları çünkü:SDL_INIT_VIDEO olmadan SDL_INIT_JOYSTICK kullanma

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

Sadece joystick'i başlatmış olsaydım işe yaramadı. video ile birlikte yapılır. Bunun çok minimalist olmasını istiyorum, bu yüzden sadece joystick'i başlatmanın bir yolu olup olmadığını bilmek güzel olurdu. Değilse, birileri videoyu başlatmanın ve kullanmanın hiçbir dezavantajının olup olmadığını bana söyleyebilir mi?

Burada Ubuntu'dayım, ama bunun çeşitli platformlarda çalışmasını bekliyorum. Bu davranış farklı ortamlarda farklılık gösteriyor mu?

Teşekkürler :)

cevap

7

Ben benzer sorunlar vardı. Temel olarak SDL_INIT_VIDEO olmadan çalışmadı, çünkü SDLs olay sistemi video sürücüsünden kaynaklanıyor, en azından Linux'ta (X11).

Hiç bir pencere oluşturmadan video başlatmak mükemmel bir şeydir (en azından çalışır). Bu yaklaşımı hem Win32 hem de Linux üzerinde test ettim, bu yüzden iyi bir çok platformda çalışıyor gibi görünüyor.

+0

Bunu windows7 üzerinde deniyorum ve bu doğru değil gibi görünüyor. SDL_CreateWindow işlevinin kapatılması, olay döngüsünün Logitech Gamepad üzerindeki düğmelerle değil analog çubuklarla tetiklenmesini sağlar. Pencere oluşturulduğunda iyi çalışıyor. – user505160

3

Benzer bir sorun var, olay döngüsünü kullanmadan çözdüm. Bunun yerine joystickleri manuel olarak güncellerim ve ardından joystickleri kontrol etmek için SDL fonksiyonlarını kullanırım.

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