Non decorated OpenGL programs..

As i know mostly all OpenGL programs build into one or more windows. (if it by GLUT,XLib,etc’…)

I say let take the nice window and kill it! (this ugly box shape around the program)
transform the defualt background (usely black) into Alpha Channel & have non decorated/backgorund OpenGL based program.

If u didn’t get my idea, i mean that after all of this the ONLY thing that we will see is the pure 3D model/object floating on the screen.

(the idea is more for desktoys, games, programs-menus, etc’… & in big look on the glut)

Are you trying to suggest a Full-screen mode?

This has nothing to do with OpenGL.

And, I believe that GLUT has a full-screen mode.

I think he’s suggesting blending the frame buffer with the desktop (or whatever happens to be behind the window), and setting the buffer clear color to glColor4f(0,0,0,0). I’m pretty sure I’ve seen DirectX demos that did this. Maybe this can already be accomplished on Windows using DirectDraw in combination with GL. At any rate, Korval is right; this has nothing to do with OpenGL.

This is old hat on OS X. It depends on your window manager, not OpenGL. It will probably be easy in Longhorn, just wait a few more years.

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).]

10x for the support & understand, Cyranose.