delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/03/04/18:30:05

From: Shawn Hargreaves <Shawn AT talula DOT demon DOT co DOT uk>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Lighting Techniques
Date: Tue, 4 Mar 1997 20:06:48 +0000
Organization: None
Distribution: world
Message-ID: <YWclicAYDIHzEwuo@talula.demon.co.uk>
References: <01bc2853$aa224320$4cddf4cc AT imag DOT net DOT imag DOT net>
NNTP-Posting-Host: talula.demon.co.uk
MIME-Version: 1.0
Lines: 40
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Chris writes:
>  To improve the engine, I want to add some lighting effects using
>Allegro's draw_lit_sprite() to "tint" areas of tiles surrounding a light.
>How do I do this? 

Declare a global color mapping table, eg.

    COLOR_MAP the_color_map;

This is 64k in size, so you might be better off allocating it on the
heap. In your startup code, write:

    create_light_table(&the_color_map, my_palette, 0, 0, 0, NULL);
    color_map = &the_color_map;

The table generation function takes a while, so you might prefer to
precalculate the table with the colormap utility, and load it as part of
a datafile. Then to draw your sprites, call draw_lit_sprite() or
draw_lit_rle_sprite() instead of the normal drawing functions, and pass
them a color parameter of 255 to have no effect on the color, 0 to make
the sprite black, and something in between to tint it somewhere between
the two extremes.

If you want to tint the sprites to some color other than black, pass a
color other than "0, 0, 0" to the create_light_table() routine, eg.
"255, 255, 255" to tint the images to white. If you want to tint them in
both directions, you could (a bit more work) use the
create_color_table() function to build a lookup table which will treat
light level 128 as the original color, 0 as black, and 255 as white.

How successful these functions will be is very dependent on your choice
of palette. Being limited to 256 colors, tinting a red pixel towards
black is obviously only going to work if there are some dark reds
available...


/*
 *  Shawn Hargreaves - shawn AT talula DOT demon DOT co DOT uk - http://www.talula.demon.co.uk/
 *  Beauty is a French phonetic corruption of a short cloth neck ornament.
 */

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019