views:

744

answers:

2

I remember my old Radeon graphics drivers which had a number of overlay effects or color filters (whatever they are called) that would render the screen in e.g. sepia tones or negative colors. My current NVIDIA card does not seem to have such a function so I wondered if it is possible to make my own for Vista.

I don't know if there is some way to hook into window's rendering engine or, alternatively, into NVIDIA's drivers to achieve this effect. While it would be cool to just be able to modify the color, it would be even better to modify the color based on its screen coordinates or perform other more varied functions. An example would be colors which are more desaturated the longer they are from the center of the screen.

I don't have a specific use scenario so I cannot provide much more information. Basically, I'm just curious if there is anything to work with in this area.

+1  A: 

You could have a full-screen layered window on top of everything and passing through click events.. However that's hacky and slow compared to what could be done by getting a hook in the WDM renderer's DirectX context. However, so far it's not possible, as Microsoft does not provide any public interface into this.

The Flip 3D utility does this, though, but even there that functionality is not in the program, it's in the WDM DLL, called by ordinal (hidden/undocumented function, obviously, since it doesn't serve any other purpose). So pretty much another dead end, from where I haven't bothered to dig deeper.

On that front, the best we can do is wait for some kind of official API.

psoul
Too bad. But how about the graphics drivers, maybe they allow some way to do this?
Morten Christiansen
I wonder if you could pull it off using DirectX overlay surfaces.
ChrisV
A: 

If you're really struggling to achieve this, winamp visualisations are capable of this although the setup can be a little tricky.

dooks