1exsprite(3) Allegro manual exsprite(3)
2
3
4
6 exsprite - Datafiles access and sprite animation. Allegro game program‐
7 ming library.
8
10 #include <allegro.h>
11
12
13 Example exsprite
14
16 This example demonstrates how to use datafiles, various sprite drawing
17 routines and flicker-free animation.
18
19 Why is the animate() routine coded in that way? As you probably know,
20 VIDEO RAM is much slower than "normal" RAM, so it's advisable to reduce
21 VRAM blits to a minimum. Drawing sprite on the screen (meaning in
22 VRAM) and then clearing a background for it is not very fast. This
23 example uses a different method which is much faster, but require a bit
24 more memory.
25
26 First the buffer is cleared (it's a normal BITMAP), then the sprite is
27 drawn on it, and when the drawing is finished this buffer is copied
28 directly to the screen. So the end result is that there is a single
29 VRAM blit instead of blitting/clearing the background and drawing a
30 sprite on it. It's a good method even when you have to restore the
31 background. And of course, it completely removes any flickering effect.
32
33 When one uses a big (ie. 800x600 background) and draws something on it,
34 it's wise to use a copy of background somewhere in memory and restore
35 background using this "virtual background". When blitting from VRAM in
36 SVGA modes, it's probably, that drawing routines have to switch banks
37 on video card. I think, I don't have to remind how slow is it.
38
39 Note that on modern systems, the above isn't true anymore, and you usu‐
40 ally get the best performance by caching all your animations in video
41 ram and doing only VRAM->VRAM blits, so there is no more RAM->VRAM
42 transfer at all anymore. And usually, such transfers can run in paral‐
43 lel on the graphics card's processor as well, costing virtually no main
44 cpu time at all. See the exaccel example for an example of this.
45
46
48 BITMAP(3), DATAFILE(3), END_OF_FUNCTION(3), END_OF_MAIN(3), LOCK_FUNC‐
49 TION(3), LOCK_VARIABLE(3), SCREEN_H(3), SCREEN_W(3), allegro_error(3),
50 allegro_init(3), allegro_message(3), blit(3), circle(3), clear_bit‐
51 map(3), clear_keybuf(3), create_bitmap(3), destroy_bitmap(3),
52 draw_sprite(3), draw_sprite_h_flip(3), draw_sprite_v_flip(3),
53 draw_sprite_vh_flip(3), fixed(3), font(3), hline(3), install_int_ex(3),
54 install_keyboard(3), install_sound(3), install_timer(3), itofix(3),
55 key(3), keypressed(3), load_datafile(3), makecol(3), palette_color(3),
56 pivot_sprite(3), pivot_sprite_v_flip(3), play_sample(3), rectfill(3),
57 replace_filename(3), rest(3), screen(3), set_gfx_mode(3), set_pal‐
58 ette(3), text_height(3), textout_centre_ex(3), unload_datafile(3),
59 vsync(3)
60
61
62
63Allegro version 4.2.3 exsprite(3)