how to show semi-transparent object over playing video.
I want to show a semi-transparent window (using opengles and wince) over a playing video in the background (as done in certain effects in Compiz). so I just want to draw a semi-transparent object for this. I have few options for this:
(1) to show an object without showing the opengles window. Is it possible to do this ??
(2) Make the opengles window transparent and then show the object.
(3) Or shall i use the wince window itself to draw the opengles object??
Any suggestions will be greatly appreciated. Please can some1 help me by giving some inputs
Re: how to show semi-transparent object over playing video.
You'd be surprise how complicated that can be. I don't know all that much about WinCE or your hardware, but options that are available to you are primarily based on your hardwares capabilities.
The first thing to keep in mind, is video is usually not decoded into RGBx format. For example, under Windows XP on a desktop system, most graphics cards will have an RGBx layer on the bottom and a video overlay on top that may support various video pixel format with some kind of alpha or chroma blending mode (destination chroma is popular). So when playing video in Windows XP, it generally just placed video on the overlay on top and use destination chroma to punch wholes in the video so can see the RGBx layer below.
So your first and probably easiest options is to do something similar, however you'll need to have hardware that has a video layer below an RGBA layer that supports source alpha blending. So you can have a video application use the video layer below, then have your GLES applications window on top with blending enabled on that layer.
Another options, is if the windowing system support transparent conversion of video formats to RGB and supports alpha blending windows. However I'm inclined to think that Windows CE existing windowing system doesn't support this, but I'm not sure.
So another related options, but could be extremely time consuming/complicated would be to write your mini composition manager, that could do the above mentioned stuff.
Last option I can think of, is to do this all in one application using GLES to do all your rendering. If you can rendering your video off-screen to a framebuffer object, either by converting to a support texture format, or using video format GLES extensions for textures. You can then use the texture as a source to draw a textured quad with alpha blending enabled on top of your other GLES content. You can also apply this same trick to the mini composition manager option, using GLES as your rendering API to do composition.
I guess, just a plug, but QNX Software Systems (http://www.qnx.com) offers a real-time operating system with a composited windowing system targeting embedded, with support for a wide range of hardware, and CPU architectures.
Here's a youtube link with some of our older stuff, but it demonstrates a source alpha blended GUI overlayed on top of video (however in this demo it's just being used for transparency ;\ ):