2010-11-23 17 views
4

J'ai une scène OpenGL avec quelques chiffres. Pouvez-vous me dire ce que je dois faire pour calculer les positions des positions après "rendu"? Je sais que j'ai probablement besoin de multiplier manuellement certaines matrices, mais je ne sais pas lesquelles et comment.Position du point OpenGL après le rendu (3d -> 2d)

Merci d'avance pour toute aide!

Répondre

2

Voulez-vous connaître l'étendue maximale sur votre écran dans pixles?

Si c'est le cas, le plus simple est d'appeler gluProject pour tous vos sommets et de stocker les positions x et y maximales et minimales.

pourrait ressembler à ceci:

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++) 
{ 
    glProject(vertices[i].x, vertices[i].y, vertices[i].z, 
    modelview, projection, viewport, 
    *tx, *ty, *tz); 

    // now, the 2d position of the ith Vertex is stored in tx, ty, tz. 
    // you can now use these values to determine the 2d-extends on your screen 

}