Project advice

As an optional part of another project I would like to render something on my screen above everything else.

Is this possible to do? I have several ideas on how it might work ( below ) but no idea if it is possible. I’d appreciate any pointers or even a flat-out “No, you can’t do that”

My ideas are:

  1. Un-decorated window with either a transparent fill or filled with the “desktop” below it ( I know some other applications implement transparency this way )
  2. Window taking up the full screen but is either transparent or filled as above and either ignoring inputs or passing them to the windows beneath

windows, linux? a cross platform solution would be nice eh! :slight_smile:

Have a look at “blast”, it should be a simple and small enough example to be of help here.

Start it. Left mouse button shoots holes into windows. Middle button removes them, right button exits the program and makes the holes permanent. Through these hole you can see underlying windows, click on them, etc.


RGHP: Cross platform would be nice :slight_smile: I am looking into the Linux side first though because that is what the project will be run on.

PkK: The X Shape Extension looks to be exactly what I am looking for! Absolute genius. Hopefully I can use it from Perl ( which my project will be programmed in ) because it is spot on.


I’ve done some research and found I can use the Shape extension from Perl and have some working code using the ( directly copied ) code from the X11::Protocol examples.

Unfortunately, it seems that it takes a long time for X to change the window shape, resulting in about 4 frames a second which won’t be fast enough for what I want.

However, this code is not optimised for my usage so I might be able to get it up to an acceptable speed by removing the constant recreation of pixmap resources(?).

What I intend to do is render the ( animated ) model in such a way I can get a pixmap valid for the Shape extension, change the window shape to that and then render it in full colour. This will give me a 3D object on-screen that has no “window” to speak of.

If there is a better way, please point me to it so I can investigate.