how to display a XImage with 16bits depth in a drawable with a depth of 24bits ?
glynn at gclements.plus.com
Fri Feb 27 13:26:51 PST 2009
> I my app, I receive a raw image in 16 bits depth.
> My defaut visual have a depth of 24 bits (and all other Visual have 24
> or 32bits depth on my X server).
> To display the bitmap I try to create an XImage with XCreateImage() and
> display it with XPutImage().
> But X displays a "bad match" error
> If I try to display a "raw image" with the same depth (24bits) as the
> visual (24bits), my app works.
> Question : XImage APIs (XCreateImage() / XPutImage() / ...) can convert
> 'on the fly' the depth of the bitmap to match the visual depth
> or must I convert myself the raw bitmap to match the visual depth ?
> (convert each pixel from 16bits to 24 bits)
You must convert yourself, or use a higher-level interface. The core X
protocol doesn't do format conversions.
If you want the conversion to be done in hardware, look at OpenGL or
XRender. It's implementation-dependent whether either of these
supports a specific format (other than 24-bit RGB), so you still need
to provide a software conversion.
Glynn Clements <glynn at gclements.plus.com>
More information about the xorg