2010-06-06 11 views
7

Ich habe eine OpenGL-Szene mit einem oberen linken Koordinatensystem. Wenn ich glScale es zoomt von links oben (0,0). Ich möchte, dass es von der Maus-Koordinate (relativ zum OGL-Rahmen) heranzoomt. Wie wird das gemacht? DankAlgorithmus zum Zoomen in Maus (OpenGL)

Antwort

10

Ich glaube, das in vier Schritten durchgeführt werden kann:

  1. der x-Maus Finden und y-Koordinaten mit was auch immer Ihre Windowing-System funktionieren (dh GLUT oder SDL) hat für das, und verwenden gluUnProject zu erhalten die Objektkoordinaten, die mit denen Fenster entsprechen Koordinaten
  2. Übersetzen von (x, y, 0) an diesen Koordinaten
  3. Maßstab durch den gewünschten Vektor (i, j, k) den Ursprung zu setzen
  4. durch Übersetzen (- x, -y, 0), um den Ursprung zurück zu setzen l eft
3

Ich habe eine glatte Zoom-in-Verwendung von glortho. Das Skelett ist meine Lösung

glOrtho (initial Darstellungsfeld x, y & size)
glCallList (my Anzeigeliste)

machen.
.
Schleife, um nach und nach zu den endgültigen Viewport Koordinaten/Größe zu gehen. Implementieren Sie Ihre Timing- und FPS-Anforderungen
.
.
glOrtho (endgültige Ansichtsfenster x, y & Größe)
glCallList (meine Anzeigeliste)

machen Ich hoffe, dass Sie die allgemeine Idee. Es gibt wenige andere Methoden, um das zu erreichen, aber ich finde, dass die Methode am einfachsten zu verstehen ist.