2017-03-07 3 views
0

Ich weiß, wie man den umgekehrten Weg macht. (Lesen Sie den z-deph aus dem Puffer und dann mit dem unPjoject):OpenGL, wie bekomme ich den Zdepth-Wert, von den Koordinaten eines Punktes

(...) 
glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, depth) 
gluUnProject(x, y, depth, view_matrix, projection_matrix, viewport, world_x, world_y, world_z) 

return world_x, world_y, world_z 

Aber wie kann ich sonst tun? Ich habe die world_x, world_y und world_z Werte, wie erhalten Sie die depth.

Antwort

0

Wir brauchen den Vektor zu transformieren bis 2d und die w component

prj = perspective_matrix * Vector((world_x, world_y, world_z, 1.0f)) 

Jetzt bekommen wir z component normalisieren müssen (Der Z-Wert zwischen -1 und 1)

z_depth = prj.z/proj.w 

Für einige dumme Grund, OpenGL erfordert, dass es in den [0,1] -Bereich bewegt werden sollte

Dort ist es

Verwandte Themen