Search code examples
c++openglgluprojection-matrix

Is the documentation for gluProject missing perspective division?


The OpenGL documentation for gluProject writes that the projection of point v is computed using the given projection and model-view matrix via v'' = P * M * v then window coordinates are derived using the current viewport, e.g. winZ = (v''(2) + 1)/2.

Isn't this missing the perspective division of v'' by v''(3) ? So then we should really have formulas like winZ = (v''(2)/v''(3) + 1)/2.

This agrees with my machine's opengl implementation and the implementation on the OpenGL wiki.

So, is the documentation wrong?


Solution

  • Yes, the documentation appears to be missing the divide (which is the only reason for returning GLU_FALSE, by the way). Check the mesa implementation (lines 249-252), for instance.