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)