05-27-06 - 1


From the MSDN documentation on layered windows :

Most end users expect smooth transition effects. It's not natural for information to just pop right in your face. Television does a great job of using fades and slides to give a context of where the new information is going to appear. Computers haven't yet been able to incorporate these effects into the UI very effectively. Just think what a difference there is between the existing UI and the cool UI you constantly see in the movies. Layered windows give the product designers a lot of power to bring "cool" UI closer to reality.

Dear god, no wonder their GUI's are so unusable, they idolize the interfaces in movies like Jurrasic Park where you put on a VR head set and fly around the "file system". It's the Lorne Lanning / George Lucas school of visual effects - what we need are more fancy transition effects!

Anyhoo, I'm drawing overlays using WS_EX_LAYERED windows, and it seems to be a huge performance dog. I've tested the code and made sure I only call UpdateLayeredWindow() once in a while for changes, it's simply having the layered window around at all which seems to be bad. I'm using WS_EX_TRANSPARENT which means that it's not hit-testing mouse clicks against the alpha channel, so that's not it, so far as I can tell it's just the compositor itself that's slow. I guess the Windows GUI doesn't use hardware acceleration so it's doing CPU alpha blending. Also pretty much all my alpha is boolean, transparent or opaque, but they don't have a fast special case for that, so they're probably doing the full multiply per pixel.

No comments:

old rants