2010-06-06 9 views
7

J'ai une scène OpenGL avec un système de coordonnées en haut à gauche. Quand je glScale, il zoome de (0,0) en haut à gauche. Je veux qu'il fasse un zoom à partir des coordonnées de la souris (par rapport à l'image OGL). Comment cela est-il fait? MerciAlgorithme de zoom sur la souris (OpenGL)

Répondre

10

Je crois que cela peut être fait en quatre étapes:

  1. Trouver les coordonnées x et y de la souris à l'aide de quelque fonction de votre système de fenêtrage (c.-à-GLUT ou SDL) a pour cela, et utiliser gluUnProject pour obtenir les coordonnées de l'objet qui correspondent à celles fenêtre coordonnées
  2. Traduire par (x, y, 0) pour mettre l'origine à ces coordonnées
  3. échelle par le vecteur (i, j, k) désiré
  4. Traduire par (- x, -y, 0) pour remettre l'origine en haut eft
3

J'ai fait un zoom avant en utilisant glortho. Le squelette de ma solution est

glortho (fenêtre initiale x, y & taille)
glCallList (ma liste d'affichage)
rendre
.
.
boucle pour passer graduellement aux coordonnées/dimensions de la vue finale. Mettez en œuvre votre calendrier et les exigences FPS
.
.
glortho (fenêtre finale x, y taille &)
glCallList (ma liste d'affichage)
render

J'espère que vous avez l'idée générale. Il y a peu d'autres méthodes pour y parvenir, mais je trouve glortho la méthode la plus facile à comprendre.

Questions connexes