Man Linux: Main Page and Category List

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