Provided by: allegro4-doc_4.4.3.1-4.1build3_all bug

NAME

       exsprite - Datafiles access and sprite animation. Allegro game programming library.

SYNOPSIS

       #include <allegro.h>

       Example exsprite

DESCRIPTION

       This  example  demonstrates  how  to  use  datafiles,  various  sprite  drawing routines and flicker-free
       animation.

       Why is the animate() routine coded in that way?  As you probably know, VIDEO  RAM  is  much  slower  than
       "normal" RAM, so it's advisable to reduce VRAM blits to a minimum.  Drawing sprite on the screen (meaning
       in  VRAM)  and  then  clearing a background for it is not very fast. This example uses a different method
       which is much faster, but require a bit more memory.

       First the buffer is cleared (it's a normal BITMAP), then the sprite is drawn on it, and when the  drawing
       is  finished  this  buffer  is copied directly to the screen. So the end result is that there is a single
       VRAM blit instead of blitting/clearing the background and drawing a sprite on it.   It's  a  good  method
       even when you have to restore the background. And of course, it completely removes any flickering effect.

       When  one  uses  a  big  (ie.  800x600  background) and draws something on it, it's wise to use a copy of
       background somewhere in memory and restore background using this "virtual background". When blitting from
       VRAM in SVGA modes, it's probably, that drawing routines have to switch banks on video card. I  think,  I
       don't have to remind how slow is it.

       Note  that  on  modern systems, the above isn't true anymore, and you usually get the best performance by
       caching all your animations in video ram and doing only VRAM->VRAM blits, so there is no  more  RAM->VRAM
       transfer at all anymore. And usually, such transfers can run in parallel on the graphics card's processor
       as well, costing virtually no main cpu time at all.  See the exaccel example for an example of this.

SEE ALSO

       BITMAP(3alleg4),         DATAFILE(3alleg4),        END_OF_FUNCTION(3alleg4),        END_OF_MAIN(3alleg4),
       LOCK_FUNCTION(3alleg4),       LOCK_VARIABLE(3alleg4),        SCREEN_H(3alleg4),        SCREEN_W(3alleg4),
       allegro_error(3alleg4),  allegro_init(3alleg4), allegro_message(3alleg4), blit(3alleg4), circle(3alleg4),
       clear_bitmap(3alleg4),    clear_keybuf(3alleg4),     create_bitmap(3alleg4),     destroy_bitmap(3alleg4),
       draw_sprite(3alleg4),              draw_sprite_h_flip(3alleg4),              draw_sprite_v_flip(3alleg4),
       draw_sprite_vh_flip(3alleg4),  fixed(3alleg4),  font(3alleg4),  hline(3alleg4),  install_int_ex(3alleg4),
       install_keyboard(3alleg4), install_sound(3alleg4), install_timer(3alleg4), itofix(3alleg4), key(3alleg4),
       keypressed(3alleg4),        load_datafile(3alleg4),       makecol(3alleg4),       palette_color(3alleg4),
       pivot_sprite(3alleg4),     pivot_sprite_v_flip(3alleg4),     play_sample(3alleg4),     rectfill(3alleg4),
       replace_filename(3alleg4),  rest(3alleg4),  screen(3alleg4), set_gfx_mode(3alleg4), set_palette(3alleg4),
       text_height(3alleg4), textout_centre_ex(3alleg4), unload_datafile(3alleg4), vsync(3alleg4)

Allegro                                           version 4.4.3                                exsprite(3alleg4)