From a18e27d9df3934b82ab2ddec1dbf951c24fe4cb2 Mon Sep 17 00:00:00 2001 From: Andrey Nazarov Date: Sat, 5 Apr 2008 20:44:47 +0000 Subject: Added `scr_showstats' variable. Fixed drawing of transparent sprites. --- source/gl_main.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'source/gl_main.c') diff --git a/source/gl_main.c b/source/gl_main.c index 76e78fd..02b9b74 100644 --- a/source/gl_main.c +++ b/source/gl_main.c @@ -274,22 +274,25 @@ static void GL_DrawSpriteModel( model_t *model ) { entity_t *e = glr.ent; spriteFrame_t *frame; image_t *image; - int idx, bits; + int bits; float alpha; - idx = e->frame % model->numFrames; - frame = &model->sframes[idx]; + frame = &model->sframes[e->frame % model->numFrames]; image = frame->image; GL_TexEnv( GL_MODULATE ); - alpha = 1; - bits = GLS_DEFAULT; - if( e->flags & RF_TRANSLUCENT ) { - alpha = e->alpha; - bits = GLS_BLEND_BLEND; - } + alpha = ( e->flags & RF_TRANSLUCENT ) ? e->alpha : 1.0f; + if( alpha == 1.0f ) { + if( image->flags & if_transparent ) { + bits = GLS_ALPHATEST_ENABLE; + } else { + bits = GLS_DEFAULT; + } + } else { + bits = GLS_BLEND_BLEND; + } GL_Bits( bits ); qglColor4f( 1, 1, 1, alpha ); -- cgit v1.2.3