add glow modes
This commit is contained in:
@@ -913,24 +913,31 @@ void RageDisplay::SetBlendMode(int src, int dst)
|
||||
glBlendFunc( GLenum(src), GLenum(dst) );
|
||||
}
|
||||
|
||||
void RageDisplay::SetTextureModeGlow()
|
||||
void RageDisplay::SetTextureModeGlow(GlowMode m)
|
||||
{
|
||||
if(!m_oglspecs->EXT_texture_env_combine) {
|
||||
if(m == GLOW_WHITEN && !m_oglspecs->EXT_texture_env_combine)
|
||||
m = GLOW_BRIGHTEN; /* we can't do GLOW_WHITEN */
|
||||
|
||||
switch(m)
|
||||
{
|
||||
case GLOW_BRIGHTEN:
|
||||
SetBlendMode( GL_SRC_ALPHA, GL_ONE );
|
||||
return;
|
||||
|
||||
case GLOW_WHITEN:
|
||||
/* Source color is the diffuse color only: */
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_COMBINE_RGB_EXT), GL_REPLACE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE0_RGB_EXT), GL_PRIMARY_COLOR_EXT);
|
||||
|
||||
/* Source alpha is texture alpha * diffuse alpha: */
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_COMBINE_ALPHA_EXT), GL_MODULATE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_OPERAND0_ALPHA_EXT), GL_SRC_ALPHA);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE0_ALPHA_EXT), GL_PRIMARY_COLOR_EXT);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_OPERAND1_ALPHA_EXT), GL_SRC_ALPHA);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE1_ALPHA_EXT), GL_TEXTURE);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Source color is the diffuse color only: */
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_COMBINE_RGB_EXT), GL_REPLACE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE0_RGB_EXT), GL_PRIMARY_COLOR_EXT);
|
||||
|
||||
/* Source alpha is texture alpha * diffuse alpha: */
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_COMBINE_ALPHA_EXT), GL_MODULATE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_OPERAND0_ALPHA_EXT), GL_SRC_ALPHA);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE0_ALPHA_EXT), GL_PRIMARY_COLOR_EXT);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_OPERAND1_ALPHA_EXT), GL_SRC_ALPHA);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GLenum(GL_SOURCE1_ALPHA_EXT), GL_TEXTURE);
|
||||
}
|
||||
|
||||
void RageDisplay::SetBlendModeNormal()
|
||||
|
||||
Reference in New Issue
Block a user