d3d now does fullbrights properly and skyboxes.

ogl still has broken skyboxes...


git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3653 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2010-11-13 17:22:46 +00:00
parent 129ba40ef3
commit 9eaa65ccda
14 changed files with 125 additions and 199 deletions

View File

@ -2337,9 +2337,11 @@ void CLQ2_ParseServerData (void)
{ // playing a cinematic or showing a pic, not a level
SCR_EndLoadingPlaque();
if (!Media_PlayFilm(str))
Con_TPrintf (TLC_NOQ2CINEMATICSSUPPORT, cl.servercount);
else
CL_MakeActive("Quake2");
{
CL_SendClientCommand(true, "nextserver %i", cl.servercount);
}
CL_MakeActive("Quake2");
}
else
{

View File

@ -572,6 +572,9 @@ void VQ3_RenderView(const q3refdef_t *ref)
r_refdef.viewangles[0] = -(atan2(ref->viewaxis[0][2], sqrt(ref->viewaxis[0][1]*ref->viewaxis[0][1]+ref->viewaxis[0][0]*ref->viewaxis[0][0])) * 180 / M_PI);
r_refdef.viewangles[1] = (atan2(ref->viewaxis[0][1], ref->viewaxis[0][0]) * 180 / M_PI);
r_refdef.viewangles[2] = 0;
VectorCopy(ref->viewaxis[0], r_refdef.viewaxis[0]);
VectorCopy(ref->viewaxis[1], r_refdef.viewaxis[1]);
VectorCopy(ref->viewaxis[2], r_refdef.viewaxis[2]);
if (ref->rdflags & 1)
r_refdef.flags |= Q2RDF_NOWORLDMODEL;
else

View File

@ -1706,6 +1706,11 @@ qboolean Media_PlayFilm(char *name)
if (cin->rewind)
cin->rewind(cin);
}
else
{
R_UnloadShader(videoshader);
videoshader = NULL;
}
}
// Media_ShutdownCin(fullscreenvid);

View File

@ -2056,12 +2056,17 @@ void Surf_DrawWorld (void)
qbyte *vis;
RSpeedLocals();
if (r_refdef.flags & Q2RDF_NOWORLDMODEL || !cl.worldmodel)
if (r_refdef.flags & Q2RDF_NOWORLDMODEL)
{
r_refdef.flags |= Q2RDF_NOWORLDMODEL;
BE_DrawWorld(NULL);
return;
}
if (!cl.worldmodel || cl.worldmodel->needload)
{
/*Don't act as a wallhack*/
return;
}
Surf_SetupFrame();

View File

@ -1459,6 +1459,13 @@ void Sbar_DrawInventory (int pnum)
}
// ammo counts
if (headsup)
{
for (i=0 ; i<4 ; i++)
{
Sbar_DrawSubPic((hudswap) ? 0 : (sbar_rect.width-42), -24 - (4-i)*11, 42, 11, sb_ibar, 3+(i*48), 0, 320, 24);
}
}
for (i=0 ; i<4 ; i++)
{
snprintf (num, sizeof(num), "%3i",cl.stats[pnum][STAT_SHELLS+i] );
@ -1468,7 +1475,6 @@ void Sbar_DrawInventory (int pnum)
numc[3] = 0;
if (headsup)
{
Sbar_DrawSubPic((hudswap) ? 0 : (sbar_rect.width-42), -24 - (4-i)*11, 42, 11, sb_ibar, 3+(i*48), 0, 320, 24);
Sbar_DrawExpandedString((hudswap) ? 3 : (sbar_rect.width-39), -24 - (4-i)*11, numc);
}
else

View File

@ -1626,7 +1626,7 @@ qboolean S_IsPlayingSomewhere(sfx_t *s)
int i;
for (si = sndcardinfo; si; si=si->next)
{
for (i = 0; i < MAX_CHANNELS; i++)
for (i = 0; i < scard->total_chans; i++)
if (si->channel[i].sfx == s)
return true;
}
@ -1669,7 +1669,7 @@ void S_RawAudio(int sourceid, qbyte *data, int speed, int samples, int channels,
s->inuse = false;
for (si = sndcardinfo; si; si=si->next)
for (i = 0; i < MAX_CHANNELS; i++)
for (i = 0; i < si->total_chans; i++)
if (si->channel[i].sfx == &s->sfx)
{
si->channel[i].sfx = NULL;

View File

@ -184,7 +184,7 @@ void OpenAL_CvarInit(void);
// User-setable variables
// ====================================================================
#define MAX_CHANNELS 256 /*tracked sounds (including statics)*/
#define MAX_CHANNELS 1024/*tracked sounds (including statics)*/
#define MAX_DYNAMIC_CHANNELS 8 /*playing sounds (identical ones merge)*/

View File

@ -60,69 +60,6 @@ extern unsigned int sys_parentheight;
LONG CDAudio_MessageHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
#endif
/*
struct soundcardinfo_s {
int snd_linear_count; //change in asm_i386.h. MUST be first
float pitch[MAXSOUNDCHANNELS];
float yaw[MAXSOUNDCHANNELS];
float dist[MAXSOUNDCHANNELS];
void *handle;
void *(*Lock) (soundcardinfo_t *sc);
void (*Unlock) (soundcardinfo_t *sc, void *buffer);
void (*Submit) (soundcardinfo_t *sc);
void (*Shutdown) (soundcardinfo_t *sc);
unsigned int (*GetDMAPos) (soundcardinfo_t *sc);
void (*SetWaterDistortion) (soundcardinfo_t *sc, qboolean underwater);
#ifdef AVAIL_DSOUND
LPDIRECTSOUND pDS;
LPDIRECTSOUNDBUFFER pDSBuf;
LPDIRECTSOUNDBUFFER pDSPBuf;
#endif
HWAVEOUT hWaveOut;
HANDLE hData;
HGLOBAL hWaveHdr;
HPSTR lpData;
LPWAVEHDR lpWaveHdr;
DWORD mmstarttime;
DWORD gSndBufSize;
qboolean selfpainting;
qboolean inactive_sound;
int paintedtime;
int oldpaintedtime;
int oldsamplepos;
int buffers;
dma_t sn;
char name[128];
int snd_sent;
int snd_completed;
channel_t channel[MAX_CHANNELS];
int total_chans;
#ifdef AVAIL_DSOUND
#ifdef _IKsPropertySet_
LPKSPROPERTYSET EaxKsPropertiesSet;
#endif
#endif
int rawstart;
int rawend;
struct soundcardinfo_s *next;
};
*/
//void VID_LockBuffer (void);
//void VID_UnlockBuffer (void);

View File

@ -920,9 +920,10 @@ void R_LightArraysByte_BGR(vecV_t *coords, byte_vec4_t *colours, int vertcount,
{
for (i = vertcount-1; i >= 0; i--)
{
colours[i][0] = ambientlightb[0];
colours[i][1] = ambientlightb[1];
colours[i][2] = ambientlightb[2];
*(int*)colours[i] = *(int*)ambientlightb;
// colours[i][0] = ambientlightb[0];
// colours[i][1] = ambientlightb[1];
// colours[i][2] = ambientlightb[2];
}
}
else

View File

@ -287,7 +287,6 @@
NAME(TL_FTEEXTENSIONS)
NAME(TLC_LINEBREAK_NEWLEVEL)
NAME(TLC_PC_PS_NL)
NAME(TLC_NOQ2CINEMATICSSUPPORT)
NAME(TLC_GOTSVDATAPACKET)
NAME(TLC_BAD_MAXCLIENTS)
NAME(TLC_TOOMANYMODELPRECACHES)

View File

@ -97,14 +97,14 @@ static void Matrix3_Transpose (mat3_t in, mat3_t out)
out[2][0] = in[0][2];
out[2][1] = in[1][2];
}
static void Matrix3_Multiply_Vec3 (mat3_t a, vec3_t b, vec3_t product)
static void Matrix3_Multiply_Vec3 (const mat3_t a, const vec3_t b, vec3_t product)
{
product[0] = a[0][0]*b[0] + a[0][1]*b[1] + a[0][2]*b[2];
product[1] = a[1][0]*b[0] + a[1][1]*b[1] + a[1][2]*b[2];
product[2] = a[2][0]*b[0] + a[2][1]*b[1] + a[2][2]*b[2];
}
static int Matrix3_Compare(mat3_t in, mat3_t out)
static int Matrix3_Compare(const mat3_t in, const mat3_t out)
{
return !memcmp(in, out, sizeof(mat3_t));
}
@ -117,7 +117,7 @@ typedef struct
unsigned int flags;
float curtime;
entity_t *curentity;
const entity_t *curentity;
shader_t *curshader;
texnums_t *curtexnums;
texid_t curlightmap;
@ -294,25 +294,41 @@ void BE_D3D_Reset(qboolean before)
}
}
static void D3DBE_ApplyShaderBits(unsigned int bits);
void BE_Init(void)
static void BE_ApplyTMUState(unsigned int tu, unsigned int flags)
{
be_maxpasses = MAX_TMUS;
memset(&shaderstate, 0, sizeof(shaderstate));
shaderstate.curvertdecl = -1;
FTable_Init();
shaderstate.dynxyz_size = sizeof(vecV_t) * DYNVBUFFSIZE;
shaderstate.dyncol_size = sizeof(byte_vec4_t) * DYNVBUFFSIZE;
shaderstate.dynst_size = sizeof(vec2_t) * DYNVBUFFSIZE;
shaderstate.dynidx_size = sizeof(index_t) * DYNIBUFFSIZE;
BE_D3D_Reset(false);
/*force all state to change, thus setting a known state*/
shaderstate.shaderbits = ~0;
D3DBE_ApplyShaderBits(0);
if ((flags ^ shaderstate.tmuflags[tu]) & SHADER_PASS_CLAMP)
{
shaderstate.tmuflags[tu] ^= SHADER_PASS_CLAMP;
if (flags & SHADER_PASS_CLAMP)
{
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_ADDRESSW, D3DTADDRESS_CLAMP);
}
else
{
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_ADDRESSW, D3DTADDRESS_WRAP);
}
}
if ((flags ^ shaderstate.tmuflags[tu]) & SHADER_PASS_NOMIPMAP)
{
shaderstate.tmuflags[tu] ^= SHADER_PASS_NOMIPMAP;
/*lightmaps don't use mipmaps*/
if (flags & SHADER_PASS_NOMIPMAP)
{
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_MIPFILTER, D3DTEXF_NONE);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
}
else
{
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
}
}
}
static void D3DBE_ApplyShaderBits(unsigned int bits)
@ -424,6 +440,33 @@ static void D3DBE_ApplyShaderBits(unsigned int bits)
}
}
void BE_Init(void)
{
unsigned int i;
be_maxpasses = MAX_TMUS;
memset(&shaderstate, 0, sizeof(shaderstate));
shaderstate.curvertdecl = -1;
FTable_Init();
shaderstate.dynxyz_size = sizeof(vecV_t) * DYNVBUFFSIZE;
shaderstate.dyncol_size = sizeof(byte_vec4_t) * DYNVBUFFSIZE;
shaderstate.dynst_size = sizeof(vec2_t) * DYNVBUFFSIZE;
shaderstate.dynidx_size = sizeof(index_t) * DYNIBUFFSIZE;
BE_D3D_Reset(false);
/*force all state to change, thus setting a known state*/
shaderstate.shaderbits = ~0;
D3DBE_ApplyShaderBits(0);
for (i = 0; i < MAX_TMUS; i++)
{
shaderstate.tmuflags[i] = ~0;
BE_ApplyTMUState(i, 0);
}
}
static void allocvertexbuffer(IDirect3DVertexBuffer9 *buff, unsigned int bmaxsize, unsigned int *offset, void **data, unsigned int bytes)
{
unsigned int boff;
@ -513,40 +556,7 @@ static void SelectPassTexture(unsigned int tu, shaderpass_t *pass)
break;
}
if ((pass->flags ^ shaderstate.tmuflags[tu]) & SHADER_PASS_CLAMP)
{
shaderstate.tmuflags[tu] ^= SHADER_PASS_CLAMP;
if (pass->flags & SHADER_PASS_CLAMP)
{
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_ADDRESSW, D3DTADDRESS_CLAMP);
}
else
{
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_ADDRESSW, D3DTADDRESS_WRAP);
}
}
if ((pass->flags ^ shaderstate.tmuflags[tu]) & SHADER_PASS_NOMIPMAP)
{
shaderstate.tmuflags[tu] ^= SHADER_PASS_NOMIPMAP;
/*lightmaps don't use mipmaps*/
if (pass->flags & SHADER_PASS_NOMIPMAP)
{
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_MIPFILTER, D3DTEXF_NONE);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
}
else
{
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);
IDirect3DDevice9_SetSamplerState(pD3DDev9, tu, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
}
}
BE_ApplyTMUState(tu, pass->flags);
switch (pass->blendmode)
{
@ -556,7 +566,7 @@ static void SelectPassTexture(unsigned int tu, shaderpass_t *pass)
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_COLOROP, D3DTOP_DOTPRODUCT3);
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
// IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
break;
case GL_REPLACE:
@ -568,15 +578,14 @@ static void SelectPassTexture(unsigned int tu, shaderpass_t *pass)
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
break;
case GL_ADD:
if (!tu)
goto forcemod;
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_COLORARG1, D3DTA_TEXTURE);
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_COLORARG2, D3DTA_CURRENT);
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_COLOROP, D3DTOP_ADD);
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_COLOROP, D3DTOP_BLENDTEXTUREALPHA);
shaderstate.passcolour &= 0xff000000;
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAOP, D3DTOP_ADD);
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
break;
case GL_DECAL:
if (!tu)
@ -586,7 +595,7 @@ static void SelectPassTexture(unsigned int tu, shaderpass_t *pass)
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_COLOROP, D3DTOP_BLENDTEXTUREALPHA);
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAARG2, D3DTA_CURRENT);
// IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAARG2, D3DTA_CURRENT);
IDirect3DDevice9_SetTextureStageState(pD3DDev9, tu, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
break;
default:

View File

@ -308,6 +308,9 @@ void D3D9_Upload (texid_t tex, char *name, enum uploadfmt fmt, void *data, vo
{
switch (fmt)
{
case TF_RGBX32:
flags |= IF_NOALPHA;
//fall through
case TF_RGBA32:
Upload_Texture_32(tex.ptr, data, width, height, flags);
break;
@ -387,7 +390,7 @@ texid_t D3D9_LoadTexture8Pal24 (char *identifier, int width, int height, qbyte *
(palette24[i*3+1]<<8) |
(palette24[i*3+0]<<0);
}
return D3D9_LoadTexture8Pal32(identifier, width, height, data, pal32, flags);
return D3D9_LoadTexture8Pal32(identifier, width, height, data, (qbyte*)pal32, flags);
}
#endif

View File

@ -2043,7 +2043,7 @@ void Shader_SetPassFlush (shaderpass_t *pass, shaderpass_t *pass2)
{
pass->numMergedPasses++;
}
else if (config_tex_env_combine || config_nv_tex_env_combine4)
else if (pass->numMergedPasses < be_maxpasses)
{
if ( pass->blendmode == GL_REPLACE )
{
@ -2064,33 +2064,6 @@ void Shader_SetPassFlush (shaderpass_t *pass, shaderpass_t *pass2)
pass->numMergedPasses++;
}
}
else if (config_multitexure)
{
//don't merge more than 2 tmus.
if (pass->numMergedPasses != 1)
return;
// check if we can use R_RenderMeshMultitextured
if ( pass->blendmode == GL_REPLACE )
{
if ( pass2->blendmode == GL_ADD && config_env_add )
{
pass->numMergedPasses = 2;
}
else if ( pass2->blendmode && pass2->blendmode != GL_DECAL )
{
pass->numMergedPasses = 2;
}
}
else if (pass->blendmode == GL_MODULATE && pass2->blendmode == GL_MODULATE)
{
pass->numMergedPasses = 2;
}
else if (pass->blendmode == GL_ADD && pass2->blendmode == GL_ADD && config_env_add)
{
pass->numMergedPasses = 2;
}
}
}
void Shader_SetFeatures ( shader_t *s )

View File

@ -75,13 +75,12 @@ void R_DrawSkyChain (batch_t *batch)
else
skyshader = batch->shader;
#ifdef GLQUAKE
if (skyshader->skydome)
skyboxtex = skyshader->skydome->farbox_textures;
else
skyboxtex = NULL;
if (qrenderer == QR_OPENGL && skyboxtex && TEXVALID(*skyboxtex))
if (skyboxtex && TEXVALID(*skyboxtex))
{
R_CalcSkyChainBounds(batch);
GL_DrawSkyBox (skyboxtex, batch);
@ -89,7 +88,7 @@ void R_DrawSkyChain (batch_t *batch)
GL_SkyForceDepth(batch);
return;
}
#ifdef GLQUAKE
if (*r_fastsky.string)
{
R_CalcSkyChainBounds(batch);
@ -338,8 +337,8 @@ static void R_CalcSkyChainBounds (batch_t *batch)
for (i=0 ; i<6 ; i++)
{
skymins[0][i] = skymins[1][i] = 9999;
skymaxs[0][i] = skymaxs[1][i] = -9999;
skymins[0][i] = skymins[1][i] = -1;//9999;
skymaxs[0][i] = skymaxs[1][i] = 1;//9999;
}
// calculate vertex values for sky box
@ -456,11 +455,10 @@ static void GL_SkyForceDepth(batch_t *batch)
}
}
static void GL_DrawSkySphere (batch_t *batch, shader_t *shader)
static void R_DrawSkyMesh(batch_t *batch, mesh_t *m, shader_t *shader)
{
static entity_t skyent;
batch_t b;
mesh_t *m;
float time = cl.gametime+realtime-cl.gametimemark;
float skydist = gl_maxdist.value;
@ -481,35 +479,31 @@ static void GL_DrawSkySphere (batch_t *batch, shader_t *shader)
skyent.scale = 1;
//FIXME: We should use the skybox clipping code and split the sphere into 6 sides.
gl_skyspherecalc(2);
b = *batch;
b.meshes = 1;
b.firstmesh = 0;
m = &skymesh;
b.mesh = &m;
b.ent = &skyent;
b.shader = shader;
b.skin = &shader->defaulttextures;
BE_SubmitBatch(&b);
}
static void GL_DrawSkySphere (batch_t *batch, shader_t *shader)
{
//FIXME: We should use the skybox clipping code and split the sphere into 6 sides.
gl_skyspherecalc(2);
R_DrawSkyMesh(batch, &skymesh, shader);
}
#ifdef GLQUAKE
static void GL_MakeSkyVec (float s, float t, int axis, float *vc, float *tc)
{
vec3_t b;
int j, k;
float skydist = gl_skyboxdist.value;
extern cvar_t gl_maxdist;
if (!skydist)
{
skydist = gl_maxdist.value * 0.577;
}
b[0] = s*skydist;
b[1] = t*skydist;
b[2] = skydist;
b[0] = s;
b[1] = t;
b[2] = 1;
for (j=0 ; j<3 ; j++)
{
@ -538,7 +532,7 @@ static void GL_MakeSkyVec (float s, float t, int axis, float *vc, float *tc)
}
#ifdef GLQUAKE
@ -675,7 +669,6 @@ R_DrawSkyBox
==============
*/
static int skytexorder[6] = {0,2,1,3,4,5};
#ifdef GLQUAKE
static void GL_DrawSkyBox (texid_t *texnums, batch_t *s)
{
int i;
@ -709,11 +702,6 @@ static void GL_DrawSkyBox (texid_t *texnums, batch_t *s)
}
}
qglPushMatrix ();
qglTranslatef (r_origin[0], r_origin[1], r_origin[2]);
if (cl.skyrotate)
qglRotatef (cl.time * cl.skyrotate, cl.skyaxis[0], cl.skyaxis[1], cl.skyaxis[2]);
skyfacemesh.indexes = skyface_index;
skyfacemesh.st_array = skyface_texcoord;
skyfacemesh.xyz_array = skyface_vertex;
@ -732,14 +720,9 @@ static void GL_DrawSkyBox (texid_t *texnums, batch_t *s)
GL_MakeSkyVec (skymaxs[0][i], skymins[1][i], i, skyface_vertex[3], skyface_texcoord[3]);
skyboxface->defaulttextures.base = texnums[skytexorder[i]];
BE_DrawMesh_Single(skyboxface, &skyfacemesh, NULL, &skyboxface->defaulttextures);
R_DrawSkyMesh(s, &skyfacemesh, skyboxface);
}
qglPopMatrix ();
}
#endif
//===============================================================