2010-06-06 10 views
7

Ho una scena OpenGL con un sistema di coordinate in alto a sinistra. Quando glScale si ingrandisce da (0,0) in alto a sinistra. Voglio che si ingrandisca dalle coordinate del mouse (rispetto alla cornice OGL). Come è fatto? GrazieAlgoritmo per ingrandire il mouse (OpenGL)

risposta

10

Credo che questo può essere fatto in quattro fasi:

  1. Trova coordinate X e Y del topo usando qualsiasi funzione il sistema a finestre (cioè GLUT o SDL) ha per questo, e utilizzare gluUnProject per ottenere le coordinate dell'oggetto che corrispondono a quelle finestra coordinate
  2. tradurre (x, y, 0) per mettere l'origine a quelle coordinate
  3. Scale dal vettore desiderato (i, j, k)
  4. tradurre (- x, -y, 0) per rimettere l'origine in alto l eft
3

Ho eseguito uno zoom fluido utilizzando glortho. Lo scheletro della mia soluzione è

glOrtho (iniziale finestra x, y & dimensioni)
glCallList (lista visualizzazione)
rendering
.
.
loop per passare gradualmente alle coordinate/dimensioni finali del viewrport. Implementa i tuoi tempi e i requisiti FPS
.
.
glOrtho (ultima finestra x, y & dimensioni)
glCallList (il mio elenco di visualizzazione)
rendono

spero che si ottiene l'idea generale. Ci sono pochi altri metodi per raggiungere questo risultato, ma trovo che il metodo sia il più facile da comprendere.

Problemi correlati