Modify the 3d->2d projection equations

We are developing on Win32 platform. Is it possible to modify the 3d->2d projection equations or modify the final position of the projected 2D vertices before final rendering in OpenGl? Basically we would like to warp each vertex after it is projected onto the screen but before it gets used to render points, lines, surfaces, etc. We can do this modification by either doing the 3d world to 2d screen projection ourselves (is there some hook or callback that can do this?) or by taking the 2D projected vertices from OpenGL, warping them, and then feeding them back to OpenGL for final rendering.

Imagine that all the projection calculations get done and the resulting 2D points in screen or 2d plane coordinates are then modified through a function like this:

void warp( double &x, double &y )
x = x * 0.1y;
y *= 1.1;

before they get drawn or used to fill objects etc on the screen.

Any suggestions?



you should look to the NV_vertex_program and the EXT_vertex_shader extensions, there you can do such transformations.

Another chance would be to adjust the fov of the gluPerspective