update for VID_ApplyGammaRamps

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4360 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2013-05-14 06:01:02 +00:00
parent 1aaeb8faa8
commit 2085f67ad4

View file

@ -52,7 +52,6 @@ qboolean GLVID_Init (rendererstate_t *info, unsigned char *palette)
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
} }
Con_Printf("Getting gamma\n");
SDL_GetGammaRamp(intitialgammaramps[0], intitialgammaramps[1], intitialgammaramps[2]); SDL_GetGammaRamp(intitialgammaramps[0], intitialgammaramps[1], intitialgammaramps[2]);
if (info->fullscreen) if (info->fullscreen)
@ -74,7 +73,6 @@ Con_Printf("Getting gamma\n");
ActiveApp = true; ActiveApp = true;
GLVID_SetPalette (palette);
GL_Init(GLVID_getsdlglfunction); GL_Init(GLVID_getsdlglfunction);
qglViewport (0, 0, vid.pixelwidth, vid.pixelheight); qglViewport (0, 0, vid.pixelwidth, vid.pixelheight);
@ -142,79 +140,29 @@ void GL_EndRendering (void)
GL_DoSwap(); GL_DoSwap();
} }
void GLVID_SetPalette (unsigned char *palette) qboolean GLVID_ApplyGammaRamps (unsigned short *ramps)
{ {
qbyte *pal; if (ramps)
unsigned r,g,b;
unsigned v;
unsigned short i;
unsigned *table;
extern qbyte gammatable[256];
//
// 8 8 8 encoding
//
if (vid_hardwaregamma.value)
{ {
// don't built in the gamma table if (vid_hardwaregamma.value)
pal = palette;
table = d_8to24rgbtable;
for (i=0 ; i<256 ; i++)
{ {
r = pal[0]; if (gammaworks)
g = pal[1]; { //we have hardware gamma applied - if we're doing a BF, we don't want to reset to the default gamma (yuck)
b = pal[2]; SDL_SetGammaRamp (&ramps[0], &ramps[256], &ramps[512]);
pal += 3; return;
}
// v = (255<<24) + (r<<16) + (g<<8) + (b<<0); gammaworks = !SDL_SetGammaRamp (&ramps[0], &ramps[256], &ramps[512]);
// v = (255<<0) + (r<<8) + (g<<16) + (b<<24);
v = (255<<24) + (r<<0) + (g<<8) + (b<<16);
*table++ = v;
} }
d_8to24rgbtable[255] &= 0xffffff; // 255 is transparent else
gammaworks = false;
return gammaworks;
} }
else else
{ {
//computer has no hardware gamma (poor suckers) increase table accordingly SDL_SetGammaRamp (intitialgammaramps[0], intitialgammaramps[1], intitialgammaramps[2]);
return true;
pal = palette;
table = d_8to24rgbtable;
for (i=0 ; i<256 ; i++)
{
r = gammatable[pal[0]];
g = gammatable[pal[1]];
b = gammatable[pal[2]];
pal += 3;
// v = (255<<24) + (r<<16) + (g<<8) + (b<<0);
// v = (255<<0) + (r<<8) + (g<<16) + (b<<24);
v = (255<<24) + (r<<0) + (g<<8) + (b<<16);
*table++ = v;
}
d_8to24rgbtable[255] &= 0xffffff; // 255 is transparent
} }
if (LittleLong(1) != 1)
for (i=0 ; i<256 ; i++)
d_8to24rgbtable[i] = LittleLong(d_8to24rgbtable[i]);
}
void GLVID_ShiftPalette (unsigned char *palette)
{
extern unsigned short ramps[3][256];
if (vid_hardwaregamma.value) //this is needed because ATI drivers don't work properly (or when task-switched out).
{
if (gammaworks)
{ //we have hardware gamma applied - if we're doing a BF, we don't want to reset to the default gamma (yuck)
SDL_SetGammaRamp (ramps[0], ramps[1], ramps[2]);
return;
}
gammaworks = !SDL_SetGammaRamp (ramps[0], ramps[1], ramps[2]);
}
else
gammaworks = false;
} }
void GLVID_SetCaption(char *text) void GLVID_SetCaption(char *text)