From: Timothee "TTimo" Besset Date: Sat, 5 May 2012 03:32:27 +0000 (-0700) Subject: Merge pull request #48 from mrwonko/ModelAlpha X-Git-Tag: xonotic-v0.7.0~16^2^2~6 X-Git-Url: http://git.xonotic.org/?a=commitdiff_plain;h=4152f5b41f64eecb87dbfce40ac0cf093120b36f;hp=fc61d44bc12b927bc1777aee0ecd6d63378a2fc5;p=xonotic%2Fnetradiant.git Merge pull request #48 from mrwonko/ModelAlpha Fixed transparency (qer_trans) not working on models --- diff --git a/plugins/model/cpicosurface.cpp b/plugins/model/cpicosurface.cpp index da88eb58..470623fa 100644 --- a/plugins/model/cpicosurface.cpp +++ b/plugins/model/cpicosurface.cpp @@ -48,12 +48,18 @@ void CPicoSurface::Draw( int state, IShader *pShader, int rflags ){ if ( !( rflags & ( DRAW_RF_SEL_OUTLINE | DRAW_RF_SEL_FILL | DRAW_RF_XY ) ) ) { if ( state & DRAW_GL_TEXTURE_2D ) { + bool bTrans = ( pShader->getFlags() & QER_TRANS ) == QER_TRANS; + bool bDrawBlend = ( state & DRAW_GL_BLEND ) == DRAW_GL_BLEND; + //only draw transparent stuff when in transparent stuff pass and vice versa + if(bTrans != bDrawBlend) { + return; + } g_QglTable.m_pfn_qglBindTexture( GL_TEXTURE_2D, pShader->getTexture()->texture_number ); if ( ( rflags & DRAW_RF_CAM ) && ( pShader->getFlags() & QER_ALPHAFUNC ) ) { int nFunc = 0; float fRef = 0.f; - g_QglTable.m_pfn_qglColor4f( 1.f, 1.f, 1.f, 1.f ); // identity + g_QglTable.m_pfn_qglColor4f( 1.f, 1.f, 1.f, pShader->getTrans() ); // transparency g_QglTable.m_pfn_qglEnable( GL_ALPHA_TEST );