このページは大阪弁化フィルタによって翻訳生成されたんですわ。

翻訳前ページへ


Manual de Allegro: 08 Objetos bitmap

08 Objetos bitmap

Una vez haya seleccionado un modo gr畴ico, puede dibujar cosas en la pantalla por el bitmap 'screen'. Todas las rutinas de dibujo de Allegro dibujan en estructuras BITMAP, que son 疵eas de memoria que contienen im疊enes rectangulares, almacenadas en arrays de packs de bytes (un byte por pixel en modos de 8 bits, sizeof(short) bytes por pixel en modos de 15 y 16 bits por pixel, 3 bytes por pixel en modos de 24 bits y sizeof(long) bytes por pixel en modos de 32 bits). Puede crear y manipular bitmaps en la memoria RAM, o puede dibujar en el bitmap especial 'screen' que representa la memoria de v?eo de su tarjeta gr畴ica.

Por ejemplo, para dibujar un pixel en la pantalla escribir?:

   putpixel(screen, x, y, color);
O para implementar un sistema doble-buffer:
   BITMAP *bmp = create_bitmap(320, 200);    // crea un bitmap en la RAM
   clear_bitmap(bmp);                        // limpia el bitmap
   putpixel(bmp, x, y, color);               // dibuja sobre el bitmap
   blit(bmp, screen, 0, 0, 0, 0, 320, 200);  // lo copia a la pantalla
Mire abajo para saber c?o obtener acceso directo a la memoria de un bitmap.

Allegro soporta varios tipos diferentes de bitmaps:

- El bitmap screen, que representa la memoria de v?eo de su hardware. Debe dibujar sobre 駘 para que su imagen sea visible.

- Bitmaps de memoria, que est疣 situados en la RAM del sistema y pueden ser usados para almacenar gr畴icos o como espacios de dibujo temporales para sistemas doble buffer. Estos pueden ser obtenidos llamando create_bitmap(), load_pcx(), o al cargar un fichero de datos.

padre. Pueden tener sus propias 疵eas de recorte, por lo que son ?iles para dividir un bitmap en varias unidades m疽 peque?s, ej: partir una pantalla virtual grande en m?tiples secciones (mire examples/exscroll.c).

- Bitmaps de memoria de v?eo. Estos son creados con la funci? create_video_bitmap(), y normalmente son implementados como sub-bitmaps del objeto screen.

- Bitmaps de sistema. Se crean mediante la funci? create_system_bitmap(), de la plataforma que puede activar una aceleraci? hardware mejor de la que es posible con un bitmap de memoria normal (vea los bits GFX_HW_SYS_TO_VRAM_BLIT y GFX_HW_SYS_TO_VRAM_BLIT_MASKED en gfx_capabilities). A los bitmaps de sistema se debe acceder de la misma


extern BITMAP *screen;
Puntero global a un bitmap, de tama? VIRTUAL_W x VIRTUAL_H. Esto es creado por set_gfx_mode(), y representa la memoria de v?eo de su set_gfx_mode, is_screen_bitmap, create_video_bitmap, scroll_screen. BITMAP *create_bitmap(int width, int height);
Crea un bitmap de memoria con tama? width por height, y devuelve un usarlo. Esta rutina usa siempre el formato global de profundidad de color especificado al llamar set_color_depth().

Relacionado con: create_bitmap_ex, create_sub_bitmap, create_video_bitmap, destroy_bitmap, set_color_depth, is_memory_bitmap.
BITMAP *create_bitmap_ex(int color_depth, int width, int height);
Crea un bitmap de una profundidad de color espec?ica (8, 15, 16, 24 o 32 bits por pixel).
Relacionado con: create_bitmap, create_sub_bitmap, create_video_bitmap, destroy_bitmap, is_memory_bitmap.
BITMAP *create_sub_bitmap(BITMAP *parent, int x, y, width, height);
Crea un sub-bitmap, es decir, un bitmap que comparte memoria con un bitmap ya existente, pero posiblemente con un tama? y 疵ea de recorte diferentes. Cuando cree un sub-bitmap de la pantalla en modo-X, la posici? x debe ser un m?tiplo de cuatro. La anchura y altura del sub-bitmap pueden extenderse fuera de los bordes del bitmap padre (ser疣 recortados), pero el punto de origen debe estar en una regi? del bitmap padre.
Relacionado con: create_bitmap, create_bitmap_ex, destroy_bitmap, is_sub_bitmap.
has quedado sin memoria vram libre). Esto puede ser usado para reservar memoria de v?eo oculta para almacenar gr畴icos preparados para operaciones aceleradas por hardware, o para crear m?tiples p疊inas de v?eo que luego pueden ser visualizadas con show_video_bitmap(). Los bitmaps de memoria de v?eo son normalmente reservados usando el mismo espacio que el bitmap screen, ya que pueden sobreescribirlo: por lo tanto no es una buena idea usar screen al mismo tiempo que las superficies devueltas por esta funci?.
Relacionado con: create_bitmap, create_bitmap_ex, create_sub_bitmap, destroy_bitmap, screen, show_video_bitmap, gfx_capabilities, is_screen_bitmap.
BITMAP *create_system_bitmap(int width, int height);
Crea un bitmap en memoria de sistema del tama? especificado, devolviendo un puntero a 駘 si no hubo problemas o NULL en caso contrario.
Relacionado con: create_bitmap, create_bitmap_ex, create_video_bitmap, create_sub_bitmap, destroy_bitmap, is_system_bitmap.
void destroy_bitmap(BITMAP *bitmap);
Destruye un bitmap de memoria, sub-bitmap, bitmap de memoria de v?eo o un bitmap de sistema cuando ya no lo necesite.
Relacionado con: create_bitmap, raras en su programa.


int bitmap_color_depth(BITMAP *bmp);
Devuelve la profundidad de color del bitmap especificado (8, 15, 16, 24, o 32).

Relacionado con: set_color_depth, bitmap_mask_color.
int bitmap_mask_color(BITMAP *bmp);
Devuelve el color de m疽cara del bitmap especificado (el valor que es ignorado al dibujar sprites). En bitmaps de 256 colores es cero, y en bitmaps truecolor es rosa fucsia (rojo y azul al m痊imo, verde a cero).
Relacionado con: MASK_COLOR_8, set_color_depth, bitmap_color_depth.
int is_same_bitmap(BITMAP *bmp1, BITMAP *bmp2);
Devuelve TRUE si ambos bitmaps describen el mismo 疵ea de dibujo, ej: sus punteros son iguales, uno es un sub-bitmap del otro, o ambos son sub-bitmaps de un padre com?.
Relacionado con: create_sub_bitmap.
int is_linear_bitmap(BITMAP *bmp);
Devuelve TRUE si bmp es un bitmap lineal, es decir, es un bitmap de memoria, pantalla en modo 13h o SVGA. En bitmaps lineales puede usar las funciones _putpixel(), _getpixel(), bmp_write_line(), y bmp_read_line().
Relacionado con: is_planar_bitmap, is_memory_bitmap.
int is_planar_bitmap(BITMAP *bmp);
Devuelve TRUE si bmp es un bitmap de pantalla plano (modo-X o Xtended).
Relacionado con: is_linear_bitmap, is_memory_bitmap.
int is_memory_bitmap(BITMAP *bmp);
Devuelve TRUE si bmp es un bitmap de memoria, es decir, que fue creado llamando create_bitmap() o cargado de un fichero de datos o una imagen. Los bitmaps de memoria pueden ser accedidos con los punteros de l?ea de la estructura bitmap, ej: bmp->line[y][x] = color.
Relacionado con: is_linear_bitmap, is_planar_bitmap.
int is_screen_bitmap(BITMAP *bmp);
Devuelve TRUE si bmp es el bitmap screen, o un sub-bitmap de 駘.
Relacionado con: screen, create_video_bitmap, create_sub_bitmap.
int is_video_bitmap(BITMAP *bmp);
Devuelve TRUE si bmp es el bitmap screen, o un bitmap de memoria de video, o un sub-bitmap de alguno de ellos.
Relacionado con: screen, create_video_bitmap, create_sub_bitmap.
int is_system_bitmap(BITMAP *bmp);
Devuelve TRUE si bmp es un bitmap de sistema, o un sub-bitmap de uno.
Relacionado con: create_system_bitmap, create_sub_bitmap.
int is_sub_bitmap(BITMAP *bmp);
Devuelve TRUE si bmp es un sub-bitmap.
Relacionado con: create_sub_bitmap.
void acquire_bitmap(BITMAP *bmp);
Bloquea el bitmap de memoria de v?eo especificado antes de dibujar en 駘. Esto no se aplica a los bitmaps de memoria, y s?o afecta a algunas plataformas (Windows lo necesita, DOS no). Estas llamadas no son rutina no gr畴ica!
Relacionado con: release_bitmap, acquire_screen, release_screen.
void release_bitmap(BITMAP *bmp);
Libera un bitmap que fue bloqueado previamente mediante una llamada a acquire_screen, release_screen.
void acquire_screen();
Sin?imo de acquire_bitmap(screen);
Relacionado con: acquire_bitmap, release_bitmap, release_screen.
void release_screen();
Sin?imo de release_bitmap(screen);
Relacionado con: acquire_bitmap, release_bitmap, acquire_screen.
de dibujo (normalmente casi nada, aunque cualquier poco ayuda) pero har疣 que su programa muera horriblemente si intenta dibujar fuera de los bordes del bitmap.



Volver al Indice