To read all comments associated with this story, please click here.
Window compositing isn't about transparent windows so much as its about being able to do window moving, resizing, etc, with zero flicker. Also, transparency might be annoying when overused, but it can also allow for rounded window corners that don't look like ass because of aliasing, as well as subtle effects like window shadows.
Okay for transparancy, I could live without with the ever so subtle effects I don't normally notice like the shadows and for some rounded apps like clocks. Most of the gross rounded apps I see are those awefull media players that come from graphic card installers.
The technique I use for window moving, resizing is entirely flicker free since draws are only done during the Pulse event, effectively the user interaction queues up tiny draws in the clip bit map which is then emptied or zeroed after the Pulse update. In the Apple QD world this was done by region accumulation. Being cpu driven means that the window dragging is a tad bit more jerky than if done by a GPU, but this lil project is intended for a GPU less system.
FWIW this is built on top of BeOS but should port to any OS since it doesn't use more than a few hooks to the host. That will allow it to run on cpu only FPGA system with the look n feel of a regular OS.
What I find most interesting in alt OSes is to see what the consensus is on doing things, whether for or against the mainstream, user features and internal details.




Member since:
2005-07-08
Its interesting to read the various comments on the site regarding changes to compositing esp from others that are doing their own render schemes not related to SkyOS.
The change from the original scheme was obviously needed.
Can't say I buy into the glassy translucent window thing, seems a good way to show of GPU power at special FX than actually being useful. It also shows that 1 or a few people can do what MS & Apple no doubt have many more people working on. I never read a book with transparent paper though and wouldn't want to.
To add to the comments I also use a single screen 32b backbuffer for my lil ol windows project and have pretty smooth responsiveness with many hundreds of large overlapped windows. It all comes down to the way the clipping is done. I know how Apple QD used to do this with regions as lists of delta edges. Instead I use a low rez bitmap so every 8x8 screen pixel tile has a 1 bit mask so blitting is done 64pixels or so per clip test. The unwanted overdrawing is hidden by rendering windows back to front so approx 20% more pixels are painted than absolutely needed. An earlier scheme used to test every pixel and was very slow.
Also drawing is only done on Pulse events if the clip mask has been changed. User actions simply cause Show() to add more bits to that mask. The front window uses that mask as is, each behind windows use a clip minus each infront window. Since this is all low rez b/w, its pretty fast and most clip masks are null. Ofcourse I'l never have enough cpu perf to do translucent or alpha effects.
I'd be curious to know more about SkyOS region clipping if its still there, bitmap or rectangle lists of some sort?