2009-03-28 4 views

Antwort

3

Zoomen in OpenGL und Keyboar-Eingänge bekommen sind zwei verschiedene Dinge. Sie können jede GUI (MFC, WxWidgets, Qt, .Net) verwenden, um Tastaturereignisse als Eingabe zu erfassen. Dann können Sie OpenGL-Funktionen (glTranslate) aufrufen, um den Zoom zu ändern und dann alles in Ihrer Szene neu zu zeichnen.

1

In Win32 können Sie etwas Folgendes tun, den Zustand eines Schlüsselhalter:

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

VKEY ist ein int, die den Schlüssel ASCII-Wert.

Wenn Sie wissen, dass die „Zoom“ -Taste gedrückt wird, dann können Sie eine übersetzen tun

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

Realistisch betrachtet würden Sie komplexeren Code verwenden, um den Zoom zu tun, da dies natürlich auf die abhängigen Blickrichtung. Außerdem hätten Sie eine komplexere Schlüsselstatusfunktion, die in Ihrer Nachrichtenschleife enthalten wäre und den Status aller Schlüssel enthält, die Ihre App verwenden würde, einschließlich der Mausposition und der Maustasten.

+0

Woher bekomme ich eine Referenz? – noob88

+0

Nun kann die Funktion selbst mit einem schnellen Google gefunden werden. http://msdn.microsoft.com/en-us/library/ms646293(VS.85).aspx Dies ist möglicherweise nicht die beste Richtung, um jedoch zu gehen. Sie müssen genauer angeben, wie Sie das OpenGL-Fenster erstellen. Verwenden Sie zum Beispiel GLUT? –