Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
exsprite(3)			Allegro	manual			   exsprite(3)

       exsprite	- Datafiles access and sprite animation. Allegro game program-
       ming library.

       #include	<allegro.h>

       Example exsprite

       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  ex-
       ample  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 di-
       rectly 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	 back-
       ground. 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 usu-
       ally 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	paral-
       lel 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.

       TION(3),	 LOCK_VARIABLE(3), SCREEN_H(3),	SCREEN_W(3), allegro_error(3),
       allegro_init(3),	 allegro_message(3),  blit(3),	circle(3),  clear_bit-
       map(3),	   clear_keybuf(3),    create_bitmap(3),    destroy_bitmap(3),
       draw_sprite(3),	    draw_sprite_h_flip(3),	draw_sprite_v_flip(3),
       draw_sprite_vh_flip(3), fixed(3), font(3), hline(3), install_int_ex(3),
       install_keyboard(3),  install_sound(3),	install_timer(3),   itofix(3),
       key(3),	keypressed(3), load_datafile(3), makecol(3), palette_color(3),
       pivot_sprite(3),	pivot_sprite_v_flip(3),	 play_sample(3),  rectfill(3),
       replace_filename(3),   rest(3),	screen(3),  set_gfx_mode(3),  set_pal-
       ette(3),	 text_height(3),   textout_centre_ex(3),   unload_datafile(3),

Allegro				 version 4.4.3			   exsprite(3)


Want to link to this manual page? Use this URL:

home | help