2009-03-28 7 views
-1

quelqu'un peut-il me dire comment?comment utiliser le clavier comme commande pour zoomer opengl?

je ne l'ai jamais fait ça avant donc je ne suis pas sûr que ce que la bibliothèque à utiliser et comment appeler la commande qu'une touche enfoncée comme une instruction plutôt que l'entrée ..

J'écris un OpenGL programme dans Visio C++

Répondre

3

Zoomer dans OpenGL et obtenir des entrées de keyboar sont deux choses différentes. Vous pouvez utiliser n'importe quelle interface graphique (MFC, wxWidgets, Qt, .Net) pour capturer des événements de clavier en entrée. Ensuite, vous pouvez appeler les fonctions OpenGL (glTranslate) pour changer le zoom, puis redessiner tout dans votre scène.

1

Dans Win32, vous pouvez faire quelque chose pour obtenir ce qui suit l'état d'une clé:

#define KEY_DOWN(vKey) (GetAsyncKeyState(vKey) & 0x8000) ? true : false 
#define KEY_UP(vKey)  (GetAsyncKeyState(vKey) & 0x8000) ? false: true 

vKey est un int représentant les touches valeur ASCII.

dépendant

Quand vous savez que le « zoom » touche est enfoncée, vous pouvez faire traduire

glPushMatrix(); 
    glTranslate3f(5.0,0.0,0.0); // moves the camera +5 down the x-axis 
    ... 
glPopMatrix(); 

De façon réaliste, vous souhaitez utiliser un code plus complexe pour faire le zoom car cela est bien sûr sur la voir la direction. De plus, vous auriez une fonction d'état clé plus complexe qui se trouverait dans votre boucle de message et maintiendrait l'état de toutes les touches que votre application utiliserait, y compris la position de la souris et les boutons de la souris.

+0

où puis-je obtenir une référence sur ce ?? – noob88

+0

Eh bien, la fonction elle-même peut être trouvée avec un google rapide. http://msdn.microsoft.com/en-us/library/ms646293(VS.85).aspx Cela peut ne pas être la meilleure direction à prendre cependant. Vous devez être plus précis sur la façon dont vous créez la fenêtre opengl. Utilisez-vous GLUT par exemple? –