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

FreeBSD Manual Pages

  
 
  

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

NAME
     exlights  - One way to do colored lighting effects in a hicolor video mode.
     Allegro game programming library.

SYNOPSIS
     #include <allegro.h>

     Example exlights

DESCRIPTION
     This program shows one way to implement colored lighting effects in  a  hi-
     color video mode. Warning: it is not for the faint of heart!  This is by no
     means the simplest or easiest to understand method, I just thought it was a
     cool concept that would be worth demonstrating.

     The  basic  approach is to select a 15 or 16 bit screen mode, but then draw
     onto 24 bit memory bitmaps. Since we only need the bottom 5 bits of each  8
     bit  color  in  order to store 15 bit data within a 24 bit location, we can
     fit a light level into the top 3 bits.  The tricky bit is that these aren't
     actually 24 bit images at	all:  they  are  implemented  as  8  bit  memory
     bitmaps,  and  we just store the red level in one pixel, green in the next,
     and blue in the next, making the total image be three times wider	than  we
     really  wanted.   This  allows  us to use all the normal 256 color graphics
     routines for drawing onto our memory surfaces, most importantly the  lookup
     table  translucency,  which  can be used to combine the low 5 bits of color
     and the top 3 bits of light in a single drawing operation.   Some	trickery
     is needed to load 24 bit data into this fake 8 bit format, and of course it
     needs  a  custom  routine	to  convert the resulting image while copying it
     across to the hardware screen.

     This program chugs slightly on my p133, but not  significantly  worse  than
     any  double  buffering in what amounts to a 1920x640, 256 color resolution.
     The light blending doesn't seem to slow it down too badly, so I think  this
     technique	would be quite usable on faster machines and in lower resolution
     hicolor modes. The biggest problem is that although you keep  the	full  15
     bit  color  resolution,  you  only get 3 bits of light, ie. 8 light levels.
     You can do some nice colored light patches, but smooth gradients aren't go-
     ing to work too well :-)

SEE ALSO
     BITMAP(3),   COLOR_MAP(3),   END_OF_MAIN(3),    PALETTE(3),    SCREEN_H(3),
     SCREEN_W(3),    allegro_error(3),	  allegro_init(3),   allegro_message(3),
     bitmap_color_depth(3),  blit(3),  bmp_unwrite_line(3),   bmp_write_line(3),
     circlefill(3),   clear_bitmap(3),	 clear_keybuf(3),   color_map(3),   cre-
     ate_bitmap_ex(3),	destroy_bitmap(3),  draw_trans_sprite(3),   fixatan2(3),
     fixsqrt(3),    fixtoi(3),	  getb_depth(3),   getg_depth(3),   getpixel(3),
     getr_depth(3), hsv_to_rgb(3),  install_keyboard(3),  install_mouse(3),  in-
     stall_timer(3),  itofix(3), key(3), keypressed(3), line(3), load_bitmap(3),
     makecol(3), mouse_x(3), mouse_y(3), poll_mouse(3), replace_filename(3), re-
     trace_count(3),  screen(3),   select_palette(3),	set_color_conversion(3),
     set_color_depth(3), set_gfx_mode(3)

Allegro 			  version 4.4.3 		     exlights(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=exlights&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help