En general, Allegro está diseñada para usarse sólo con una profundidad de color a la vez, así que sólo llamará una vez a set_color_depth() y entonces almacenará todos sus bitmaps en el mismo formato. Si quiere mezclar diferentes formatos de píxel, puede usar create_bitmap_ex() en vez de create_bitmap(), y llamar a bitmap_color_depth() para pedir el formato de la imagen en cuestión. La mayoría de las rútinas gráficas requieren que todos sus parámetros de entrada estén en el mismo formato (p.ej. no puede expandir un bitmap origen de 15 bits en un destino de 24 bits), pero hay cuatro excepciones: blit() y las rutinas de rotación puede copiar entren bitmaps de cualquier formato, convirtiendo los datos cuando se requiera, draw_sprite() puede dibujar imágenes origen de 256 colores en destion de cualquier formato, draw_character() _siempre_ usa un bitmap origen de 256 colores, sea cual sea el formato de destino, las funciones draw_trans_sprite() y draw_trans_rle_sprite() son capaces de dibujar imágenes de 32 bits RGBA en un destino hicolor o truecolor, siempre y cuando llame antes a set_alpha_blender(), y la función draw_trans_sprite() es capaz de dibujar una imagen con 8 bits de canal alfa encima de una imagen ya existente de 32 bits, siempre y cuando llame antes a set_write_alpha_blender().
Expandir un bitmap origen de 256 colores en un bitmap destino truecolor es muy rápido (¡obviamente deberá ajustar la paleta de colores correcta antes de la conversión!). Convertir entre diferentes formatos truecolor es algo más lento, y reducir imágenes truecolor a 256 puede ser muy lento (puede acelerarse si crea una tabla global rgb_map antes de realizar la conversión).
int bestfit_color(const PALLETE pal, int r, int g, int b);
Busca en la paleta el valor más parecido al color requerido, que es
especificado en el formato hardware de la VGA 0-63. Normalmente debería
llamar makecol8() en vez de esto, pero esta función de bajo nivel puede
ser útil si necesita usar una paleta de colores diferente a la
seleccionada, o si no quiere usar la tabla precalculada rgb_map a
propósito.
Relacionado con: makecol8.extern RGB_MAP *rgb_map;
typedef struct { unsigned char data[32][32][32]; } RGB_MAP;
Relacionado con: create_rgb_table, makecol8.void create_rgb_table(RGB_MAP *table, const PALETTE pal, void (*callback)(int pos));
Relacionado con: rgb_map.void hsv_to_rgb(float h, float s, float v, int *r, int *g, int *b);