10 Formatos de pixel truecolor



En los modos de vídeo truecolor, los componentes rojo, verde y azul de cada pixel son empaquetados directamente en el valor del color, en vez de ser un índice a una tabla de colores. En los modos de 15 bits hay 5 bits para cada color, en modos de 16 bits hay 5 bits para rojo y azul y seis para verde, y los modos de 24 y 32 bits usan ambos 8 bits para cada color (los pixels de 32 bits simplemente tienen un byte extra para alinear los datos). El mapa de estos componentes puede variar entre ordenadores, pero generalmente será RGB o BGR. ¡Ya que el mapa no es conocido hasta que seleccionas el modo de vídeo que vas a usar, debe llamar set_gfx_mode() antes de usar cualquiera de las siguientes rutinas!

int makecol8(int r, int g, int b);
int makecol15(int r, int g, int b);
int makecol16(int r, int g, int b);
int makecol24(int r, int g, int b);
int makecol32(int r, int g, int b);
Estas rutinas convierten los colores desde un formato independiente del hardware (rojo, verde y azul que van de 0 a 255) a varios formatos de pixel dependientes del hardware. Convertir entre formatos de 15, 16, 24 o 32 bits sólo requiere algunos desplazamientos de bits, por lo que es eficiente. Convertir hacia un color de 8 bits requiere buscar la paleta para encontrar el color más parecido, algo que es muy lento a no ser que haya creado un mapa RGB (mire abajo).

int makecol(int r, int g, int b);
Convierte colores desde un formato independiente del hardware (rojo, verde y azul que van de 0 a 255) al formato de pixel requerido por el modo de vídeo actual, llamando a las funciones previas makecol de 8, 15, 16, 24, o 32 bits según convenga.

int makecol_depth(int color_depth, int r, int g, int b);
Convierte colores desde un formato independiente del hardware (rojo, verde y azul que van de 0 a 255) al formato de pixel requerido por la profundidad de color especificada.

int makecol15_dither(int r, int g, int b, int x, int y);
int makecol16_dither(int r, int g, int b, int x, int y);
Dados dos valores y coordenadas de pixel, calcula una valor RGB difuminado de 15 o 16 bits. Esto puede producir mejores resultados al reducir imágenes de truecolor a hicolor. Aparte de llamar estas funciones diréctamente, el difuminado hicolor puede ser activado automáticamente al cargar gráficos llamando la función set_color_conversion(), por ejemplo set_color_conversion(COLORCONV_REDUCE_TRUE_TO_HI | COLORCONV_DITHER).

int getr8(int c);
int getg8(int c);
int getb8(int c);
int getr15(int c);
int getg15(int c);
int getb15(int c);
int getr16(int c);
int getg16(int c);
int getb16(int c);
int getr24(int c);
int getg24(int c);
int getb24(int c);
int getr32(int c);
int getg32(int c);
int getb32(int c);
Dado un color en un formato dependiente del hardware, estas funciones extraen uno de los componentes rojo, verde o azul (de 0 a 255).

int getr(int c);
int getg(int c);
int getb(int c);
Dado un color en el formato usado por el modo de vídeo actual, estas funciones extraen un componente rojo, verde o azul (de 0 a 255), llamando las funciones previas get de 8, 15, 16, 24 o 32 bits según convenga.

int getr_depth(int color_depth, int c);
int getg_depth(int color_depth, int c);
int getb_depth(int color_depth, int c);
Dado un color en el formato usado por la profundidad de color especificada, estas funciones extraen un componente rojo, verde o azul (de 0 a 255).

extern int palette_color[256];
Tabla de mapa de la paleta que convierte un color (0-255) en el formato de pixel que está siendo usado por el modo de vídeo. En un modo de 256 colores esto simplemente apunta al índice del array. En modos truecolor mire el valor especificado en la paleta actual, y lo convierte a ese valor RGB en el formato apropiado de pixel empaquetado.

#define MASK_COLOR_8 0
#define MASK_COLOR_15 (5.5.5 pink)
#define MASK_COLOR_16 (5.6.5 pink)
#define MASK_COLOR_24 (8.8.8 pink)
#define MASK_COLOR_32 (8.8.8 pink)
Constantes que representan los colores usados para enmascarar los pixels transparentes de los sprites para cada profundidad de color. En resoluciones de 256 colores es cero, y en modos truecolor es rosa fucsia (rojo y azul al máximo, verde a cero).




Volver al Indice