2010-11-27 25 views
4

Je suis en train d'utiliser la fonction gluProject, pour obtenir les coordonnées des points dans la fenêtre 2d après "rendu". Le problème est que j'ai des résultats étranges. Par exemple: j'ai un point avec x = 16.5. Quand j'utilise gluProject, j'obtiens x = -6200.0. Si je comprends bien gluProject OK, je devrais obtenir une position de pixel de ce point sur mon écran après "rendu" - ai-je raison? Comment puis-je convertir ce résultat étrange en coordonnées de pixels à l'écran?OpenGL gluProject() - résultats étranges

Nous vous remercions de votre aide!

code J'utilise (par « sum1stolemyname »):

GLdouble modelview[16], projection[16] 
GLint viewport[4]; 

glGetDoublev(GL_MODELVIEW_MATRIX, *modelView); 
glGetDoublev(GL_PROJECTION_MATRIX, *projection); 
glGetIntegerv(GL_VIEWPORT, *viewport); 

double tx, ty, tz; 

for(i = 0; i < VertexCount; i++) 
{ 
    gluProject(vertices[i].x, vertices[i].y, vertices[i].z, 
    modelview, projection, viewport, 
    &tx, &ty, &tz) 
} 
+1

Ceci ne sera pas compilé. Vous mélangez les opérateurs * et &. –

+0

Corrigé. Merci! – MattheW

Répondre

2

Oui, ce ne malheureusement il le fait aussi loin que le plan loin afin que vous puissiez construire un « rayon » dans le monde. Cela ne vous donne pas la position réelle du pixel que vous dessinez dans l'espace 3D. Ce que vous pouvez faire est de faire une ligne de l'écran à votre point que vous obtenez à partir du gluProject puis l'utiliser pour trouver le point d'intersection avec votre géométrie pour obtenir le point dans l'espace 3D. Une autre option consiste à modifier les matrices d'entrée et la fenêtre d'affichage afin que le plan éloigné soit à une distance plus raisonnable.

+1

Ha mon mauvais je pense à GLUnProject. –