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);
Relacionado con: get_compiled_sprite.void draw_compiled_sprite(BITMAP *bmp, const COMPILED_SPRITE *sprite, int x, int y);
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.