Add a workaround for the current nVidia driver problems.

This commit is contained in:
Glenn Maynard
2003-04-18 09:13:29 +00:00
parent a269621ffe
commit a29d19903d
+41
View File
@@ -421,7 +421,48 @@ void RageDisplay::DrawQuads( const RageVertex v[], int iNumVerts )
{
ASSERT( (iNumVerts%4) == 0 );
if(iNumVerts == 0)
return;
#if 1
static float *Vertex, *Color, *Texture;
static int Size = 0;
if(iNumVerts > Size)
{
Size = iNumVerts;
delete [] Vertex;
delete [] Color;
delete [] Texture;
Vertex = new float[Size*3];
Color = new float[Size*4];
Texture = new float[Size*2];
}
for(unsigned i = 0; i < unsigned(iNumVerts); ++i)
{
Vertex[i*3+0] = v[i].p[0];
Vertex[i*3+1] = v[i].p[1];
Vertex[i*3+2] = v[i].p[2];
Color[i*4+0] = v[i].c[0];
Color[i*4+1] = v[i].c[1];
Color[i*4+2] = v[i].c[2];
Color[i*4+3] = v[i].c[3];
Texture[i*2+0] = v[i].t[0];
Texture[i*2+1] = v[i].t[1];
}
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, Vertex);
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(4, GL_FLOAT, 0, Color);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, Texture);
glDisableClientState(GL_NORMAL_ARRAY);
#else
glInterleavedArrays( RageVertexFormat, sizeof(RageVertex), v );
#endif
glDrawArrays( GL_QUADS, 0, iNumVerts );
g_iVertsRenderedSinceLastCheck += iNumVerts;