2009-05-15 6 views

Répondre

15

les opérations suivantes:

  1. Utilisez glutIgnoreKeyRepeat seulement obtenir physique keydown/keyup
  2. Utilisez glutKeyboardFunc pour enregistrer un rappel en écoutant des événements de clavier. Utilisez glutKeyboardUpFunc pour enregistrer un rappel en écoutant des événements de manipulation.
  3. Créez un tableau bool keystates[256] pour stocker l'état des touches du clavier.
  4. Lors de la réception d'un événement via le rappel, définissez keystates[key] = true. Lorsque vous recevez un événement via votre rappel de touche, définissez keystates[key] = false.
  5. Dans votre boucle d'exécution, testez si (keystates['a'] || keystates['A']) && (keystates['j'] || keystates['J']).

Regardez dans cette direction. Bien que je ne l'ai pas testé, cela devrait fonctionner. Vous pourriez également avoir besoin de glutSpecialFunc et de glutSpecialUpFunc pour recevoir des messages pour les touches «spéciales». De plus, sachez que GLUT est vraiment vieux et qu'il existe des alternatives bien plus intéressantes.

+4

peut vous en dire plus au sujet de ces alternatives plus agréables? – colorfulgrayscale

0

par « plus belle alternative » si vous voulez parler plus simple et la fonction d'entrée GLUT-indépendante puis obtenu avec fonction GetAsyncKeyState ...

MSDN - GetAsyncKeyState function

+0

Ceci est Windows uniquement. Et Windows est vraiment vieux et il existe des alternatives bien plus intéressantes. – ybungalobill

Questions connexes