int skytexturenum;
-int solidskytexture;
-int alphaskytexture;
+rtexture_t *solidskytexture;
+rtexture_t *alphaskytexture;
float speedscale; // for top sky and bottom sky
msurface_t *warpface;
return;
}
- poly = Hunk_Alloc (sizeof(glpoly_t) + (numverts-4) * VERTEXSIZE*sizeof(float));
+ poly = Hunk_AllocName (sizeof(glpoly_t) + (numverts-4) * VERTEXSIZE*sizeof(float), "surfaces");
poly->next = warpface->polys;
warpface->polys = poly;
poly->numverts = numverts;
-int skyboxside[6];
+rtexture_t *skyboxside[6];
char skyname[256];
for (i=0 ; i<6 ; i++)
{
sprintf (name, "env/%s%s", skyname, suf[i]);
- if (!(image_rgba = loadimagepixels(name, FALSE, 0, 0)))
+ if (!(image_rgba = loadimagepixels(name, false, 0, 0)))
{
sprintf (name, "gfx/env/%s%s", skyname, suf[i]);
- if (!(image_rgba = loadimagepixels(name, FALSE, 0, 0)))
+ if (!(image_rgba = loadimagepixels(name, false, 0, 0)))
{
Con_Printf ("Couldn't load %s\n", name);
continue;
}
}
- skyboxside[i] = GL_LoadTexture(va("skyboxside%d", i), image_width, image_height, image_rgba, false, false, 4);
+ skyboxside[i] = R_LoadTexture(va("skyboxside%d", i), image_width, image_height, image_rgba, TEXF_RGBA | TEXF_PRECACHE);
qfree(image_rgba);
}
}
glColor3f(0.5,0.5,0.5);
else
glColor3f(1,1,1);
- glBindTexture(GL_TEXTURE_2D, skyboxside[3]); // front
+ glBindTexture(GL_TEXTURE_2D, R_GetTexture(skyboxside[3])); // front
glBegin(GL_QUADS);
R_SkyBoxPolyVec(1, 0, 1, -1, 1);
R_SkyBoxPolyVec(1, 1, 1, -1, -1);
R_SkyBoxPolyVec(0, 1, 1, 1, -1);
R_SkyBoxPolyVec(0, 0, 1, 1, 1);
glEnd();
- glBindTexture(GL_TEXTURE_2D, skyboxside[1]); // back
+ glBindTexture(GL_TEXTURE_2D, R_GetTexture(skyboxside[1])); // back
glBegin(GL_QUADS);
R_SkyBoxPolyVec(1, 0, -1, 1, 1);
R_SkyBoxPolyVec(1, 1, -1, 1, -1);
R_SkyBoxPolyVec(0, 1, -1, -1, -1);
R_SkyBoxPolyVec(0, 0, -1, -1, 1);
glEnd();
- glBindTexture(GL_TEXTURE_2D, skyboxside[0]); // right
+ glBindTexture(GL_TEXTURE_2D, R_GetTexture(skyboxside[0])); // right
glBegin(GL_QUADS);
R_SkyBoxPolyVec(1, 0, 1, 1, 1);
R_SkyBoxPolyVec(1, 1, 1, 1, -1);
R_SkyBoxPolyVec(0, 1, -1, 1, -1);
R_SkyBoxPolyVec(0, 0, -1, 1, 1);
glEnd();
- glBindTexture(GL_TEXTURE_2D, skyboxside[2]); // left
+ glBindTexture(GL_TEXTURE_2D, R_GetTexture(skyboxside[2])); // left
glBegin(GL_QUADS);
R_SkyBoxPolyVec(1, 0, -1, -1, 1);
R_SkyBoxPolyVec(1, 1, -1, -1, -1);
R_SkyBoxPolyVec(0, 1, 1, -1, -1);
R_SkyBoxPolyVec(0, 0, 1, -1, 1);
glEnd();
- glBindTexture(GL_TEXTURE_2D, skyboxside[4]); // up
+ glBindTexture(GL_TEXTURE_2D, R_GetTexture(skyboxside[4])); // up
glBegin(GL_QUADS);
R_SkyBoxPolyVec(1, 0, 1, -1, 1);
R_SkyBoxPolyVec(1, 1, 1, 1, 1);
R_SkyBoxPolyVec(0, 1, -1, 1, 1);
R_SkyBoxPolyVec(0, 0, -1, -1, 1);
glEnd();
- glBindTexture(GL_TEXTURE_2D, skyboxside[5]); // down
+ glBindTexture(GL_TEXTURE_2D, R_GetTexture(skyboxside[5])); // down
glBegin(GL_QUADS);
R_SkyBoxPolyVec(1, 0, 1, 1, -1);
R_SkyBoxPolyVec(1, 1, 1, -1, -1);
}
}
-extern cvar_t gl_vertexarrays;
void skydome(float *source, float s, float texscale)
{
vec_t vert[33*33][3], tex[33*33][2], *v, *t;
*v++ = *source++ + r_refdef.vieworg[1];
*v++ = *source++ + r_refdef.vieworg[2];
}
- if (gl_vertexarrays.value)
- {
- qglTexCoordPointer(2, GL_FLOAT, 0, tex);
- qglVertexPointer(3, GL_FLOAT, 0, vert);
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- glEnableClientState(GL_VERTEX_ARRAY);
-// qglInterleavedArrays(GL_T2F_V3F, 0, vert);
- for (i = 0;i < (32*66);i+=66)
- qglDrawElements(GL_TRIANGLE_STRIP, 66, GL_UNSIGNED_SHORT, &skydomeindices[i]);
- glDisableClientState(GL_VERTEX_ARRAY);
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- }
- else
- {
- index = skydomeindices;
- for (i = 0;i < (32*66);i+=66)
- {
- glBegin(GL_TRIANGLE_STRIP);
- for (j = 0;j < 66;j++)
- {
- // Matrox G200 (and possibly G400) drivers don't support TexCoord2fv...
- glTexCoord2f(tex[*index][0], tex[*index][1]);
- glVertex3fv(&vert[*index++][0]);
- }
- glEnd();
- }
- }
+ glTexCoordPointer(2, GL_FLOAT, 0, tex);
+ glVertexPointer(3, GL_FLOAT, 0, vert);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+ glEnableClientState(GL_VERTEX_ARRAY);
+// glInterleavedArrays(GL_T2F_V3F, 0, vert);
+ for (i = 0;i < (32*66);i+=66)
+ glDrawElements(GL_TRIANGLE_STRIP, 66, GL_UNSIGNED_SHORT, &skydomeindices[i]);
+ glDisableClientState(GL_VERTEX_ARRAY);
+ glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
void R_SkyDome()
skydomecalc(skydomeouter, 1024, 1024, 256);
skydomecalc(skydomeinner, 512, 512, 128);
}
- speedscale = realtime*8.0/256.0;
+ speedscale = cl.time*8.0/256.0;
speedscale -= (int)speedscale;
skydome(skydomeouter, speedscale, 1.0 / 256.0);
glEnable (GL_BLEND);
glBindTexture(GL_TEXTURE_2D, alphaskytexture); // lower clouds
- speedscale = realtime*8.0/128.0;
+ speedscale = cl.time*8.0/128.0;
speedscale -= (int)speedscale;
skydome(skydomeinner, speedscale, 1.0 / 128.0);
glDisable (GL_BLEND);
((byte *)&transpix)[3] = 0;
}
- solidskytexture = GL_LoadTexture ("sky_solidtexture", 128, 128, (byte *) trans, false, false, 4);
+ solidskytexture = R_LoadTexture ("sky_solidtexture", 128, 128, (byte *) trans, TEXF_RGBA | TEXF_PRECACHE);
if (bytesperpixel == 4)
{
}
}
- alphaskytexture = GL_LoadTexture ("sky_alphatexture", 128, 128, (byte *) trans, false, true, 4);
+ alphaskytexture = R_LoadTexture ("sky_alphatexture", 128, 128, (byte *) trans, TEXF_ALPHA | TEXF_RGBA | TEXF_PRECACHE);
}