- Fix r_overBrightBits variable getting ignored on Linux

- Replaced SDL_SetGamma by SDL_SetGammaRamp with gamma behaviour now matching win_gamma.c
This commit is contained in:
Thilo Schulz 2006-04-30 13:50:13 +00:00
parent 75eb99b716
commit 82c4c70535

View file

@ -438,15 +438,35 @@ void IN_DeactivateMouse( void )
*/ */
void GLimp_SetGamma( unsigned char red[256], unsigned char green[256], unsigned char blue[256] ) void GLimp_SetGamma( unsigned char red[256], unsigned char green[256], unsigned char blue[256] )
{ {
// NOTE TTimo we get the gamma value from cvar, because we can't work with the s_gammatable Uint16 table[3][256];
// the API wasn't changed to avoid breaking other OSes int i, j;
float g; // float g;
if ( r_ignorehwgamma->integer ) if(r_ignorehwgamma->integer)
return; return;
g = Cvar_Get("r_gamma", "1.0", 0)->value; // taken from win_gamma.c:
SDL_SetGamma(g, g, g); for (i = 0; i < 256; i++)
{
table[0][i] = ( ( ( Uint16 ) red[i] ) << 8 ) | red[i];
table[1][i] = ( ( ( Uint16 ) green[i] ) << 8 ) | green[i];
table[2][i] = ( ( ( Uint16 ) blue[i] ) << 8 ) | blue[i];
}
// enforce constantly increasing
for (j = 0; j < 3; j++)
{
for (i = 1; i < 256; i++)
{
if (table[j][i] < table[j][i-1])
table[j][i] = table[j][i-1];
}
}
SDL_SetGammaRamp(table[0], table[1], table[2]);
// g = Cvar_Get("r_gamma", "1.0", 0)->value;
// SDL_SetGamma(g, g, g);
} }
/* /*
@ -553,7 +573,12 @@ static int GLW_SetMode( const char *drivername, int mode, qboolean fullscreen )
Uint32 flags = SDL_OPENGL; Uint32 flags = SDL_OPENGL;
if (fullscreen) if (fullscreen)
{
flags |= SDL_FULLSCREEN; flags |= SDL_FULLSCREEN;
glConfig.isFullscreen = qtrue;
}
else
glConfig.isFullscreen = qfalse;
if (!r_colorbits->value) if (!r_colorbits->value)
colorbits = 24; colorbits = 24;