Real-time edge distortion of 3rd-party frames

I need to be able to access the frame buffers of certain 3rd-party OpenGL and DirectX programs in order to capture the image that is output to the screen and redraw it, distorted at the edges. I’d like to be able to warp the image onto a mesh, such that a normal OpenGL or DirectX surface image is re-shaped for image projection (like a software-level keystoning, for example).

Similar to this:

As the 3rd-party programs are not written by me, I need some way of accessing the graphics card buffer into a useable format, in real-time, applying the distortion (probably as a 2d texture onto a quad?) and then re-outputting the result to screen. This output can either be to the original window, or to a dedicated window owned by my program’s process - it doesn’t matter which.

Does anyone have any ideas on the first steps to take with this?


I would personally write a plugin for GLIntercept to to this (at least for OpenGL apps)

Sinly before each frame buffer swap, create a texture from the frame buffer, do the distortion, and paste back. (If the apps in question use a FBO for main rendering, you can probably intercept that)

Final image “manipulation” by GLIntercept via free camera plugin:

This project is similar to well known FRAPS. With taksi, you can hook into any process an get access to rendering surface just before swap.

GLIntercept is another very usable project, but it is tied to opengl only. As you said, you need OGL and D3D solution.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.