Nearly all the current crop of 3D FPS games use a lighting hack which is to project a coloured spotlight texture onto all the surfaces in range, and attenuate it according to distance by tweaking the alpha. The surface normal is not usually taken into account for these lights but you could try a hack and see what it looks like. The end result isn't really lighting but it looks very pretty and it works on everything from a Voodoo1 and upwards.
If you draw all the lighting in your scene in a series of first passes using GL.ONE, GL.ONE, and then draw a single texturing pass using GL.DST_COLOR, GL.SRC_COLOR to blend them on top, you'll get pretty much the effect of as many coloured lightsources as you want, at the expense of a lot of fill-rate. Sadly there isn't really a great way to use multitexture for this.
The other alternative as Gregory suggests is to use a shader, which is a little machine-code style programming language available in OpenGL1.4 and on the
very latest graphics cards - which means maybe about 1 in a 100 people will be able to see what you've done. For about the next 4-5 years or so. The number of lights you can incorporate in a shader is limited to 8 generally and may be less depending on the implementation but it'll draw the whole surface with 8 lights and a texture (plus any other fancy stuff like bump mapping etc) in a single pass.
Cas
