Add a workaround for the current nVidia driver problems.
This commit is contained in:
@@ -421,7 +421,48 @@ void RageDisplay::DrawQuads( const RageVertex v[], int iNumVerts )
|
|||||||
{
|
{
|
||||||
ASSERT( (iNumVerts%4) == 0 );
|
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 );
|
glInterleavedArrays( RageVertexFormat, sizeof(RageVertex), v );
|
||||||
|
#endif
|
||||||
|
|
||||||
glDrawArrays( GL_QUADS, 0, iNumVerts );
|
glDrawArrays( GL_QUADS, 0, iNumVerts );
|
||||||
|
|
||||||
g_iVertsRenderedSinceLastCheck += iNumVerts;
|
g_iVertsRenderedSinceLastCheck += iNumVerts;
|
||||||
|
|||||||
Reference in New Issue
Block a user