Wpis z mikrobloga

#programowanie #cpp #opengl #glut #pytanie
Mireczki, jak koncepcyjnie podejść do sytuacji kiedy chcę żeby zmienna zmieniała swoją wartość kiedy przyciskam jakiś klawisz klawiatury. Jak przyciskam ten klawisz to zmienna ma mieć np 1, a jak go nie przyciskam to 0. Zmiana przy przyciśnięciu jest oczywista, ale jak zrobić powrót po puszczeniu klawisza? Mam funkcję do obsługi klawiatury w GLUT i tam jest tylko switch dla danych klawiszy.
  • 10
@franczi: glut to nie jest OpenGL, a framework aplikacji, tak jak GLFW - taguj pod frameworki. OpenGL to nie framework, a niskopoziomowy interfejs komunikacji z kartą graficzną :*

najprościej: tablica znaków klawiatury z indeksami jako kod ASCII kodu i typ tablicy to boolean. eventami aplikacji odbierasz naciśnięcie i puszczenie klawisza i w nich ustawiasz pola tablicy na true lub false :3
@PsichiX: Ok, sorry za zamieszanie z tagami

najprościej: tablica znaków klawiatury z indeksami jako kod ASCII kodu i typ tablicy to boolean. eventami aplikacji odbierasz naciśnięcie i puszczenie klawisza i w nich ustawiasz pola tablicy na true lub false :3


No tak, tylko jak wykryć odpuszczenie klawisza?

Cofam, jestem downem, glut udostępnia taką samą funkcję na odpuszczanie klawiszy jak na ich przyciskanie...
@franczi: do aplikacji podpinasz się na eventy naciśnięcia, trzymania i puszczenia klawisza. glut polega na eventach, czy co ramkę sprawdzasz czy dany klawisz jest wciśnięty?
@PsichiX: Jest funkcja, która przyjmuje jako argument funkcję napisaną przez użytkownika, a w tej funkcji użytkownika robi się switch case na potrzebne klawisze i tam się opisuje co ma się dziać po wciśnięciu. Jest też analogiczna na odpuszczenie przycisku.
@franczi: czyli podpinasz callback na event - a więc w tej funkcji sprawdzasz, czy to zdarzenie naciśnięcia, czy puszczenia klawisza i dalej kod ASCII klawisza traktujesz jako indeks tablicy boola - reszta z opisu wyżej :)