Originally posted by Korval:
[b]This has nothing to do with OpenGL.
And, I believe that GLUT has a full-screen mode.[/b]
He’s not asking about full-screen. He’s asking about transparent windows, i.e., drawing a 3D object directly on the desktop with a “clear” background, which is marginally OGL-related.
I have a little experience working with transparent windows under Windows and it seemed the way it works is you can define a bit mask that controls which pixels of the framebuffer get blitted to the visible screen during swap buffers. I imagine it’s part of the system that handles overlapping windows, irregularly shaped windows, clipping regions, etc…
The trick is redefining the mask each frame based on a framebuffer alpha ref or a chroma key of the color buffer and potentially merging this mask with one Windows has for overlaps. I don’t expect it to be fast for large windows unless the 2D hardware has the right functions for this and the data can all stay in videomem.
Where it is related to OGL is that it would be desirable (for some application use cases anyway) to have a WGL window creation flag e.g., SWAP_COPY_TRANSPARENT that told the driver to also write to the window’s transparency mask from framebuffer data during swap (in windowed mode only, of course).
The big problem, however, is what to do with the stuff under the window when the transparency mask changes. WindowsOS seems to be pretty non-realtime-friendly with forced redraws vs. doing save-unders with some assumptions about the mask being static (window moves are handled specially, perhaps). I don’t know how that issue would be addressed for this potential feature, but it would be a killer if it required manually saving the pixeks behind the ogl window.
Right now, if I had to animate a 3D character on the desktop with minimal pain, I’d probably start by framegrabbing the desktop and using that as a background texture with a same-sized full-screen OGL context. Of course, then the desktop is static.
[This message has been edited by Cyranose (edited 02-18-2004).]