mirror of
https://github.com/ioquake/ioq3.git
synced 2024-11-10 07:11:46 +00:00
opengl1: Fix skybox in OpenGL 1.1
Fix six image skybox having a black border around the sides of the sky when using OpenGL 1.1 (using CL_CLAMP instead of GL_CLAMP_TO_EDGE). It's technically visible in q3dm10 but it's more obvious in Team Arena maps such as mpteam6.
This commit is contained in:
parent
f9547e4533
commit
5a918bfa96
1 changed files with 20 additions and 0 deletions
|
@ -387,12 +387,17 @@ static void DrawSkySide( struct image_s *image, const int mins[2], const int max
|
||||||
static void DrawSkyBox( shader_t *shader )
|
static void DrawSkyBox( shader_t *shader )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
float w_offset, w_scale;
|
||||||
|
float h_offset, h_scale;
|
||||||
|
|
||||||
sky_min = 0;
|
sky_min = 0;
|
||||||
sky_max = 1;
|
sky_max = 1;
|
||||||
|
|
||||||
Com_Memset( s_skyTexCoords, 0, sizeof( s_skyTexCoords ) );
|
Com_Memset( s_skyTexCoords, 0, sizeof( s_skyTexCoords ) );
|
||||||
|
|
||||||
|
w_offset = h_offset = 0;
|
||||||
|
w_scale = h_scale = 1;
|
||||||
|
|
||||||
for (i=0 ; i<6 ; i++)
|
for (i=0 ; i<6 ; i++)
|
||||||
{
|
{
|
||||||
int sky_mins_subd[2], sky_maxs_subd[2];
|
int sky_mins_subd[2], sky_maxs_subd[2];
|
||||||
|
@ -432,6 +437,15 @@ static void DrawSkyBox( shader_t *shader )
|
||||||
else if ( sky_maxs_subd[1] > HALF_SKY_SUBDIVISIONS )
|
else if ( sky_maxs_subd[1] > HALF_SKY_SUBDIVISIONS )
|
||||||
sky_maxs_subd[1] = HALF_SKY_SUBDIVISIONS;
|
sky_maxs_subd[1] = HALF_SKY_SUBDIVISIONS;
|
||||||
|
|
||||||
|
if ( !haveClampToEdge )
|
||||||
|
{
|
||||||
|
w_offset = 0.5f / shader->sky.outerbox[sky_texorder[i]]->width;
|
||||||
|
h_offset = 0.5f / shader->sky.outerbox[sky_texorder[i]]->height;
|
||||||
|
|
||||||
|
w_scale = 1.0f - w_offset * 2;
|
||||||
|
h_scale = 1.0f - h_offset * 2;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// iterate through the subdivisions
|
// iterate through the subdivisions
|
||||||
//
|
//
|
||||||
|
@ -444,6 +458,12 @@ static void DrawSkyBox( shader_t *shader )
|
||||||
i,
|
i,
|
||||||
s_skyTexCoords[t][s],
|
s_skyTexCoords[t][s],
|
||||||
s_skyPoints[t][s] );
|
s_skyPoints[t][s] );
|
||||||
|
|
||||||
|
s_skyTexCoords[t][s][0] *= w_scale;
|
||||||
|
s_skyTexCoords[t][s][0] += w_offset;
|
||||||
|
|
||||||
|
s_skyTexCoords[t][s][1] *= h_scale;
|
||||||
|
s_skyTexCoords[t][s][1] += h_offset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue