15 Sprites compilados

Los sprites compilados se almacenan como instrucciones de código máquina que dibujan una imagen específica sobre un bitmap, usando instrucciones mov con valores de datos inmediatos. Esto es el método más rápido para dibujar una imagen con máscara: en mi máquina, dibujar sprites compilados es unas cinco veces más rápido que usando draw_sprite() con bitmaps normales. Los sprites compilados son grandes, por lo que si hay poca memoria, debería usar sprites RLE, y lo que puede hacer con ellos esta incluso más restringido que con sprites RLE, porque no soportan áreas de recorte. Si intenta dibujar uno fuera de los bordes de un bitmap, corromperá memoria y probablemente se cargará el sistema. Puede convertir bitmaps en sprites compilados en tiempo real, o puede crear complicadas estructuras de sprites compilados en los ficheros de datos con el grabber creando un nuevo objeto de tipo 'Compiled sprite' o 'Compiled x-sprite'.


COMPILED_SPRITE *get_compiled_sprite(BITMAP *bitmap, int planar);
Crea un sprite compilado basándose en el bitmap especificado (que debe ser un bitmap de memoria). Los sprites compilados son dependientes de los dispositivos, por lo que debe especificar si compilarlo en un formato lineal o planar. Pase FALSE como segundo parámetro si va a dibujar en bitmaps de memoria o bitmaps de pantalla de modo 13h y SVGA, y pase TRUE si va a dibujarlos en bitmaps de pantalla modo-X o modo Xtended.

Relacionado con: draw_compiled_sprite, destroy_compiled_sprite.
void destroy_compiled_sprite(COMPILED_SPRITE *sprite);
Destruye una estructura de un sprite compilado previamente creado por get_compiled_sprite().
Relacionado con: get_compiled_sprite.
void draw_compiled_sprite(BITMAP *bmp, const COMPILED_SPRITE *sprite, int x, int y);
Dibuja un sprite compilado en un bitmap en la posición especificada. El sprite debe ser compilado según el tipo correcto del bitmap (lineal o planar). Esta función no soporta áreas de recorte.

Ayuda: si el no poder recortar sprites compilados es un problema, un buen truco es crear una superficie de trabajo (bitmap de memoria, pantalla virtual en modo-X o lo que sea) un poco más grande de lo que necesite, y usar el centro como su pantalla. De esta forma puede dibujar por afuera de los bordes sin ningún problema...

Relacionado con: get_compiled_sprite, draw_sprite, draw_rle_sprite, bitmap_mask_color.

Volver al Indice