i worked out something for opengl, but i want the other stuff committed before i test it out
edit: 1/8/03 -- updated code
in gr_opengl_tmapper_internal()
...
int bitmapidx=gr_screen.current_bitmap % MAX_BITMAPS;
int do_glow=(GLOWMAP[bitmapidx] > 0);
...
if ( flags & TMAP_FLAG_TEXTURED ) {
if (do_glow)
{
//mprintf(("rendering a glow texture %s\n", bm_get_filename(GLOWMAP[bitmapidx])));
glPushAttrib(GL_TEXTURE_BIT);
glActiveTextureARB(GL_TEXTURE0_ARB); //texture is bound in gr_opengl_tcache_set
glEnable(GL_TEXTURE_2D);
texture_source=TEXTURE_SOURCE_DECAL;
}
if ( !gr_tcache_set(gr_screen.current_bitmap, tmap_type, &u_scale, &v_scale, 0, gr_screen.current_bitmap_sx, gr_screen.current_bitmap_sy ))
{
mprintf(( "Not rendering a texture because it didn't fit in VRAM!\n" ));
return;
}
if (do_glow)
{
gr_opengl_set_state(texture_source, alpha_blend, zbuffer_type);
gr_set_bitmap(GLOWMAP[bitmapidx], GR_ALPHABLEND_FILTER, GR_BITBLT_MODE_NORMAL, 0.0f);
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
texture_source=TEXTURE_SOURCE_ADD;
//texture is bound in gr_opengl_tcache_set
if ( !gr_tcache_set(gr_screen.current_bitmap, tmap_type, &u_scale, &v_scale, 0, gr_screen.current_bitmap_sx, gr_screen.current_bitmap_sy ))
{
mprintf(( "Not rendering a texture because it didn't fit in VRAM!\n" ));
return;
}
gr_opengl_set_state(texture_source, alpha_blend, zbuffer_type);
}
...
if ( flags & TMAP_FLAG_TEXTURED ) {
tu = va->u*u_scale;
tv = va->v*v_scale;
if (do_glow)
{
//use opengl hardware multitexturing
glMultiTexCoord2fARB(GL_TEXTURE0_ARB,tu,tv);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB,tu,tv);
}
else
{
glTexCoord2f(tu, tv);
}
}
in read_model_file()
fixed bounding errors
...
strcat( tmp_name, "-glow");
int glow_idx=pm->textures[i] % MAX_BITMAPS;
mprintf(("looking for glow map %s\n", tmp_name));
GLOWMAP[glow_idx]=bm_load( tmp_name ); //see if there is one
if(GLOWMAP[glow_idx]!=-1){//then fill it into the array
mprintf(("texture '%s' has a glow map, %d, assosiated with it, isn't that nice\n", tmp_name, GLOWMAP[glow_idx]));
bm_lock((GLOWMAP[glow_idx]), 8, BMP_AABITMAP);
bm_unlock((GLOWMAP[glow_idx]));
}