|
Serwis Edukacyjny Nauczycieli w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy
Wałaszek |
©2026 mgr Jerzy Wałaszek
|
Wsparcie Urządzeń Haptic
| SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
Typowe użycie tego podsystemu wyglada następująco:
SDL_Haptic *haptic; // Otwórz urządzenie haptic = SDL_HapticOpen( 0 ); if (haptic == NULL) return -1; // Inicjalizuj prosty łomot if (SDL_HapticRumbleInit( haptic ) != 0) return -1; // Odtwarzaj efekt z mocą 50% przez 2 sekundy if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0) return -1; SDL_Delay( 2000 ); // Posprzątaj SDL_HapticClose( haptic ); |
int test_haptic( SDL_Joystick * joystick ) {
SDL_Haptic *haptic;
SDL_HapticEffect effect;
int effect_id;
// Otwórz urządzenie
haptic = SDL_HapticOpenFromJoystick( joystick );
if (haptic == NULL) return -1; // Najprawdopodobniej joystick nie jest urządzeniem haptic
// Sprawdź, czy potrafi odtwarzać fale sinusoidalne
if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) {
SDL_HapticClose(haptic); // No sine effect
return -1;
}
// Utwórz ten efekt
SDL_memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 jest standardowo bezpieczne
effect.type = SDL_HAPTIC_SINE;
effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Współrzędne biegunowe
effect.periodic.direction.dir[0] = 18000; // Siła nadchodzi z południa
effect.periodic.period = 1000; // 1000 ms
effect.periodic.magnitude = 20000; // 20000/32767 siła
effect.periodic.length = 5000; // Długość 5 sekund
effect.periodic.attack_length = 1000; // 1 sekundę zajmuje osiągnięcie maksymalnej siły
effect.periodic.fade_length = 1000; // 1 sekundę zajmuje wygaszanie
// Załaduj ten efekt
effect_id = SDL_HapticNewEffect( haptic, &effect );
// Testuj ten efekt
SDL_HapticRunEffect( haptic, effect_id, 1 );
SDL_Delay( 5000); // Poczekaj, aż efekt się zakończy
// Usuwamy ten efekt, chociaż zamknięcie urządzenia zrobi to samo
SDL_HapticDestroyEffect( haptic, effect_id );
// Zamknij urządzenie
SDL_HapticClose(haptic);
return 0; // Sukces
}
|
Więcej informacji znajdziesz na blogu Edgara Simo Serra (język angielski): SDL Haptic In Depth (Archiwum).
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.