I know there is a way to create an overlay surface with DirectDraw, but that API is outdated and is not even present in the newer SDKs. Does it still work with Win7+?
What is the modern way of doing that? I've seen IDirect3DDevice9Ex support for hardware overlays, but it seems to be indended for video rendering and I'm not sure it would work (I need to render over any window, including fullscreen games). Besides, it wouldn't work with older Windows.
Also, do any of these methods support alpha blending (not color key)?
There's also a possibility to hook Direct3D to add rendering code to EndScene, but that would limit me to rendering inside an application window, and I would also have to hook other APIs such as D3D11 and OpenGL.