39 if (isColor && data.colors)
41 else if (!isColor && data.vertices)
42 free( data.vertices );
47 if (!numQuads)
return;
49 glInterleavedArrays( GL_T2F_C4F_N3F_V3F,
sizeof (
GFXColorVertex), &data.colors[0] );
51 glInterleavedArrays( GL_T2F_N3F_V3F,
sizeof (
GFXVertex), &data.vertices[0] );
52 glDrawArrays( GL_QUADS, 0, numQuads*4 );
60 if (cur+3 >= numVertices) {
67 quadassignments = (
int*) malloc( numVertices*
sizeof (
int)/4 );
68 for (
int i = 0;
i < numVertices/8;
i++)
69 quadassignments[
i] = -1;
76 quadassignments = (
int*) realloc( quadassignments, numVertices*
sizeof (
int)/4 );
78 for (
int i = numVertices/8;
i < numVertices/4;
i++)
79 quadassignments[
i] = -1;
80 Dirty = numVertices/8;
81 quadassignments[numQuads] = numQuads;
83 if (!isColor && vertices)
89 for (
int i = 0;
i < numVertices/4;
i++)
90 if (quadassignments[
i] == -1) {
91 quadassignments[
i] = numQuads;
92 if (!isColor && vertices)
106 if (quadassignments[which] >= numQuads) {
110 if (which < 0 || which >= numVertices/4 || quadassignments[which] == -1)
113 for (
int i = 0;
i < numVertices/4;
i++)
114 if (quadassignments[
i] == numQuads-1) {
118 memcpy( data.vertices+(quadassignments[which]*4), data.vertices+( (numQuads-1)*4 ), 4*
sizeof (
GFXVertex) );
119 quadassignments[
i] = quadassignments[which];
120 quadassignments[which] = -1;
128 if (which < 0 || which >= numVertices/4 || quadassignments[which] == -1)
131 int w = quadassignments[which]*4;
133 data.colors[w+0].SetVtx( vertices[0] );
134 data.colors[w+1].SetVtx( vertices[1] );
135 data.colors[w+2].SetVtx( vertices[2] );
136 data.colors[w+3].SetVtx( vertices[3] );
140 float alp = (data.colors[w].r > data.colors[w].b)
141 ? ( (data.colors[w].r > data.colors[w].g) ? data.colors[w].r : data.colors[w].g )
142 : ( (data.colors[w].b > data.colors[w].g) ? data.colors[w].b : data.colors[w].g );
145 {alpha *data.colors[w+0].r/alp, alpha*data.colors[w+0].g/alp, alpha*data.colors[w+0].b/alp, alpha};
159 if (which < 0 || which >= numVertices/4 || quadassignments[which] == -1)
164 data.vertices[(quadassignments[which]*4)+0].SetTexCoord( vertices[0].s,
165 vertices[0].t ).SetNormal(
Vector( vertices[0].
i,
173 ].
y, vertices[0].
z ) );
174 data.vertices[(quadassignments[which]*4)+1].SetTexCoord( vertices[1].s,
175 vertices[1].t ).SetNormal(
Vector( vertices[1].i,
183 ].y, vertices[1].z ) );
184 data.vertices[(quadassignments[which]*4)+2].SetTexCoord( vertices[2].s,
185 vertices[2].t ).SetNormal(
Vector( vertices[2].i,
193 ].y, vertices[2].z ) );
194 data.vertices[(quadassignments[which]*4)+3].SetTexCoord( vertices[3].s,
195 vertices[3].t ).SetNormal(
Vector( vertices[3].i,
203 ].y, vertices[3].z ) );