Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

Do strony głównej I LO w Tarnowie

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

©2020 mgr Jerzy Wałaszek
I LO w Tarnowie

logo

Autor artykułu: mgr Jerzy Wałaszek

 

SDL2

Interfejs SDL2 wg kategorii

Wsparcie Urządzeń Haptic

Rozdziały:
     Interfejs SDL2 wg nazw
     Interfejs SDL2 wg kategorii

 

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2. Oryginał znajdziesz pod tym adresem: https://wiki.libsdl.org/APIByCategory.

Wsparcie Urządzeń Haptic

Pliki nagłówkowe: SDL_haptic.h

Wprowadzenie

Podsystem SDL pozwala ci kontrolować urządzenia haptic (z siłowym sprzężeniem zwrotnym).

Typowe użycie tego podsystemu wyglada następująco:

  1. Dokonaj inicjalizacji podsystemu (SDL_INIT_HAPTIC).
    Otwórz urządzenie haptic:
    1. SDL_HapticOpen(), aby otworzyć poprzez indeks.
    2. SDL_HapticOpenFromJoystick(), aby otworzyć poprzez istniejący joystick.
  2. Utwórz efekt siłowy (SDL_HapticEffect).
  3. Załaduj ten efekt za pomocą SDL_HapticNewEffect().
  4. Uruchom ten efekt za pomocą SDL_HapticRunEffect().
  5. (Opcjonalnie) Usuń efek za pomocą SDL_HapticDestroyEffect().
  6. Zamknij urządzenie haptic za pomocą SDL_HapticClose().

Przykładowe kody

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).

Struktury

SDL_HapticCondition
SDL_HapticConstant
SDL_HapticCustom
SDL_HapticDirection
SDL_HapticEffect
SDL_HapticLeftRight
SDL_HapticPeriodic
SDL_HapticRamp

Funkcje

SDL_HapticClose
SDL_HapticDestroyEffect
SDL_HapticEffectSupported
SDL_HapticGetEffectStatus
SDL_HapticIndex
SDL_HapticName
SDL_HapticNewEffect
SDL_HapticNumAxes
SDL_HapticNumEffects
SDL_HapticNumEffectsPlaying
SDL_HapticOpen
SDL_HapticOpenFromJoystick
SDL_HapticOpenFromMouse
SDL_HapticOpened
SDL_HapticPause
SDL_HapticQuery
SDL_HapticRumbleInit
SDL_HapticRumblePlay
SDL_HapticRumbleStop
SDL_HapticRumbleSupported
SDL_HapticRunEffect
SDL_HapticSetAutocenter
SDL_HapticSetGain
SDL_HapticStopAll
SDL_HapticStopEffect
SDL_HapticUnpause
SDL_HapticUpdateEffect
SDL_JoystickIsHaptic
SDL_MouseIsHaptic
SDL_NumHaptics

 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2020 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: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.