Revert r981 "Simple use of vertex arrays in R_DrawTextureChains_Multitexture."

It caused a dramatic slowdown on my machine on windows (50% slower)

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@983 af15c1b1-3010-417e-b628-4374ebc0bcbd
This commit is contained in:
Eric Wasylishen 2014-08-30 06:30:49 +00:00
parent bdca64b93b
commit b9d280f10b
3 changed files with 28 additions and 42 deletions

View file

@ -86,7 +86,6 @@ qboolean gl_texture_NPOT = false; //ericw
PFNGLMULTITEXCOORD2FARBPROC GL_MTexCoord2fFunc = NULL; //johnfitz
PFNGLACTIVETEXTUREARBPROC GL_SelectTextureFunc = NULL; //johnfitz
PFNGLCLIENTACTIVETEXTUREARBPROC GL_ClientActiveTextureFunc = NULL; //ericw
//====================================
@ -562,8 +561,7 @@ static void GL_CheckExtensions (void)
{
GL_MTexCoord2fFunc = (PFNGLMULTITEXCOORD2FARBPROC) SDL_GL_GetProcAddress("glMultiTexCoord2fARB");
GL_SelectTextureFunc = (PFNGLACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glActiveTextureARB");
GL_ClientActiveTextureFunc = (PFNGLCLIENTACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glClientActiveTextureARB");
if (GL_MTexCoord2fFunc && GL_SelectTextureFunc && GL_ClientActiveTextureFunc)
if (GL_MTexCoord2fFunc && GL_SelectTextureFunc)
{
Con_Printf("FOUND: ARB_multitexture\n");
TEXTURE0 = GL_TEXTURE0_ARB;
@ -575,6 +573,22 @@ static void GL_CheckExtensions (void)
Con_Warning ("Couldn't link to multitexture functions\n");
}
}
else if (GL_ParseExtensionList(gl_extensions, "GL_SGIS_multitexture"))
{
GL_MTexCoord2fFunc = (PFNGLMULTITEXCOORD2FARBPROC) SDL_GL_GetProcAddress("glMTexCoord2fSGIS");
GL_SelectTextureFunc = (PFNGLACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glSelectTextureSGIS");
if (GL_MTexCoord2fFunc && GL_SelectTextureFunc)
{
Con_Printf("FOUND: SGIS_multitexture\n");
TEXTURE0 = TEXTURE0_SGIS;
TEXTURE1 = TEXTURE1_SGIS;
gl_mtexable = true;
}
else
{
Con_Warning ("Couldn't link to multitexture functions\n");
}
}
else
{
Con_Warning ("multitexture not supported (extension not found)\n");

View file

@ -157,7 +157,6 @@ extern qboolean gl_mtexable;
//johnfitz -- modified multitexture support
extern PFNGLMULTITEXCOORD2FARBPROC GL_MTexCoord2fFunc;
extern PFNGLACTIVETEXTUREARBPROC GL_SelectTextureFunc;
extern PFNGLCLIENTACTIVETEXTUREARBPROC GL_ClientActiveTextureFunc;
extern GLenum TEXTURE0, TEXTURE1;
//johnfitz

View file

@ -31,39 +31,6 @@ byte *SV_FatPVS (vec3_t org, qmodel_t *worldmodel);
extern byte mod_novis[MAX_MAP_LEAFS/8];
int vis_changed; //if true, force pvs to be refreshed
//==============================================================================
//
// VERTEX ARRAY SUPPORT
//
//==============================================================================
#define VERTEXBYTES (VERTEXSIZE * sizeof (float))
// qbsp guarantees no more than 64 verts per surf
#define MAX_VERTS_PER_SURF 64
static float r_surfvertexarray[MAX_VERTS_PER_SURF * VERTEXSIZE];
void R_VertexArrayMultitexturedSetup (void)
{
glVertexPointer(3, GL_FLOAT, VERTEXBYTES, &r_surfvertexarray[0]);
glEnableClientState(GL_VERTEX_ARRAY);
GL_ClientActiveTextureFunc(TEXTURE0);
glTexCoordPointer(2, GL_FLOAT, VERTEXBYTES, &r_surfvertexarray[3]);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
GL_ClientActiveTextureFunc(TEXTURE1);
glTexCoordPointer(2, GL_FLOAT, VERTEXBYTES, &r_surfvertexarray[5]);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
}
void R_VertexArrayMultitexturedDrawGLPoly (glpoly_t *p)
{
memcpy(r_surfvertexarray, p->verts, p->numverts * VERTEXBYTES);
glDrawArrays(GL_POLYGON, 0, p->numverts);
}
//==============================================================================
//
// SETUP CHAINS
@ -443,13 +410,12 @@ R_DrawTextureChains_Multitexture -- johnfitz
*/
void R_DrawTextureChains_Multitexture (qmodel_t *model, entity_t *ent, texchain_t chain)
{
int i;
int i, j;
msurface_t *s;
texture_t *t;
float *v;
qboolean bound;
R_VertexArrayMultitexturedSetup ();
for (i=0 ; i<model->numtextures ; i++)
{
t = model->textures[i];
@ -473,8 +439,15 @@ void R_DrawTextureChains_Multitexture (qmodel_t *model, entity_t *ent, texchain_
}
R_RenderDynamicLightmaps (s);
GL_Bind (lightmap_textures[s->lightmaptexturenum]);
R_VertexArrayMultitexturedDrawGLPoly (s->polys);
glBegin(GL_POLYGON);
v = s->polys->verts[0];
for (j=0 ; j<s->polys->numverts ; j++, v+= VERTEXSIZE)
{
GL_MTexCoord2fFunc (TEXTURE0, v[3], v[4]);
GL_MTexCoord2fFunc (TEXTURE1, v[5], v[6]);
glVertex3fv (v);
}
glEnd ();
rs_brushpasses++;
}
GL_DisableMultitexture(); // selects TEXTURE0