2010-11-23 7 views
4

Ich habe eine OpenGL-Szene mit einigen Zahlen darauf. Können Sie mir sagen, was ich tun muss, um nach dem "Rendern" die Positionen der Scheitelpunkte zu berechnen? Ich weiß, dass ich wahrscheinlich einige Matrizen manuell multiplizieren muss, aber ich weiß nicht, welche von ihnen und wie.OpenGL Punkt Position nach dem Rendern (3d -> 2d)

Vielen Dank im Voraus für jede Hilfe!

Antwort

2

Haben Sie die maximalen Ausdehnungen auf dem Bildschirm in pixles wissen?

Wenn dies der Fall ist, rufen Sie gluProject für alle Ihre Vertices auf und speichern die maximale und minimale x- und y-Position.

könnte wie folgt aussehen:

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 

}