.TH "ALLEGRO_PIXEL_FORMAT(3alleg5) Allegro reference manual" "" "" "" "" .SH NAME .PP ALLEGRO_PIXEL_FORMAT \- Allegro 5 API .SH SYNOPSIS .IP .nf \f[C] #include\ typedef\ enum\ ALLEGRO_PIXEL_FORMAT \f[] .fi .SH DESCRIPTION .PP Pixel formats. Each pixel format specifies the exact size and bit layout of a pixel in memory. Components are specified from high bits to low bits, so for example a fully opaque red pixel in ARGB_8888 format is 0xFFFF0000. .RS .PP \f[I]Note:\f[] .PP The pixel format is independent of endianness. That is, in the above example you can always get the red component with .IP .nf \f[C] (pixel\ &\ 0x00ff0000)\ >>\ 16 \f[] .fi .PP But you can \f[I]not\f[] rely on this code: .IP .nf \f[C] *(pixel\ +\ 2) \f[] .fi .PP It will return the red component on little endian systems, but the green component on big endian systems. .RE .PP Also note that Allegro\[aq]s naming is different from OpenGL naming here, where a format of GL_RGBA8 merely defines the component order and the exact layout including endianness treatment is specified separately. Usually GL_RGBA8 will correspond to ALLEGRO_PIXEL_ABGR_8888 though on little endian systems, so care must be taken (note the reversal of RGBA <\-> ABGR). .PP The only exception to this ALLEGRO_PIXEL_FORMAT_ABGR_8888_LE which will always have the components as 4 bytes corresponding to red, green, blue and alpha, in this order, independent of the endianness. .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ANY \- Let the driver choose a format. This is the default format at program start. .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ANY_NO_ALPHA \- Let the driver choose a format without alpha. .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ANY_WITH_ALPHA \- Let the driver choose a format with alpha. .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ANY_15_NO_ALPHA \- Let the driver choose a 15 bit format without alpha. .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ANY_16_NO_ALPHA \- Let the driver choose a 16 bit format without alpha. .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ANY_16_WITH_ALPHA \- Let the driver choose a 16 bit format with alpha. .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ANY_24_NO_ALPHA \- Let the driver choose a 24 bit format without alpha. .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ANY_32_NO_ALPHA \- Let the driver choose a 32 bit format without alpha. .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ANY_32_WITH_ALPHA \- Let the driver choose a 32 bit format with alpha. .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ARGB_8888 \- 32 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_RGBA_8888 \- 32 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ARGB_4444 \- 16 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_RGB_888 \- 24 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_RGB_565 \- 16 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_RGB_555 \- 15 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_RGBA_5551 \- 16 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ARGB_1555 \- 16 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ABGR_8888 \- 32 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_XBGR_8888 \- 32 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_BGR_888 \- 24 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_BGR_565 \- 16 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_BGR_555 \- 15 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_RGBX_8888 \- 32 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_XRGB_8888 \- 32 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ABGR_F32 \- 128 bit .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_ABGR_8888_LE \- Like the version without _LE, but the component order is guaranteed to be red, green, blue, alpha. This only makes a difference on big endian systems, on little endian it is just an alias. .IP \[bu] 2 ALLEGRO_PIXEL_FORMAT_RGBA_4444 \- 16bit .SH SEE ALSO .PP al_set_new_bitmap_format(3alleg5), al_get_bitmap_format(3alleg5)