rmeshstate_t m;
int lightmaptexturenum;
float cl;
+ /*
+ rcachearrayrequest_t request;
+ memset(&request, 0, sizeof(request));
+ */
memset(&m, 0, sizeof(m));
m.blendfunc1 = GL_ONE;
m.blendfunc2 = GL_ZERO;
R_Mesh_State(&m);
cl = (float) (1 << r_lightmapscalebit) * r_colorscale;
GL_Color(cl, cl, cl, 1);
+ if (!gl_mesh_copyarrays.integer)
+ R_Mesh_EndBatch();
+
while((surf = *surfchain++) != NULL)
{
if (surf->visframe == r_framecount)
if (m.tex[1] != lightmaptexturenum)
{
m.tex[1] = lightmaptexturenum;
- R_Mesh_State(&m);
+ if (gl_mesh_copyarrays.integer)
+ R_Mesh_State(&m);
}
for (mesh = surf->mesh;mesh;mesh = mesh->chain)
{
- R_Mesh_GetSpace(mesh->numverts);
- R_Mesh_CopyVertex3f(mesh->vertex3f, mesh->numverts);
- R_Mesh_CopyTexCoord2f(0, mesh->texcoordtexture2f, mesh->numverts);
- R_Mesh_CopyTexCoord2f(1, mesh->texcoordlightmap2f, mesh->numverts);
- R_Mesh_CopyTexCoord2f(2, mesh->texcoorddetail2f, mesh->numverts);
+ if (!gl_mesh_copyarrays.integer)
+ {
+ m.pointervertexcount = mesh->numverts;
+ m.pointer_vertex = mesh->vertex3f;
+ m.pointer_texcoord[0] = mesh->texcoordtexture2f;
+ m.pointer_texcoord[1] = mesh->texcoordlightmap2f;
+ m.pointer_texcoord[2] = mesh->texcoorddetail2f;
+ /*
+ request.id_pointer1 = ent->model;
+ request.id_pointer2 = mesh->texcoorddetail2f;
+ request.data_size = sizeof(float[2]) * mesh->numverts;
+ if (R_Mesh_CacheArray(&request))
+ memcpy(request.data, mesh->texcoorddetail2f, request.data_size);
+ m.pointer_texcoord[2] = request.data;
+ */
+ R_Mesh_State(&m);
+ }
+ else
+ {
+ R_Mesh_GetSpace(mesh->numverts);
+ R_Mesh_CopyVertex3f(mesh->vertex3f, mesh->numverts);
+ R_Mesh_CopyTexCoord2f(0, mesh->texcoordtexture2f, mesh->numverts);
+ R_Mesh_CopyTexCoord2f(1, mesh->texcoordlightmap2f, mesh->numverts);
+ R_Mesh_CopyTexCoord2f(2, mesh->texcoorddetail2f, mesh->numverts);
+ }
R_Mesh_Draw(mesh->numverts, mesh->numtriangles, mesh->element3i);
}
}