Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek
Uaktualniono: 31.07.2022

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

Interfejs SDL2:

Wsparcie Urządzeń Haptic

SPIS TREŚCI

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.

Wsparcie Urządzeń Haptic

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

Funkcje


Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2024 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.