rendered paste bodyIndex: src/ref_gl/gl_local.h===================================================================--- src/ref_gl/gl_local.h (Revision 9719)+++ src/ref_gl/gl_local.h (Arbeitskopie)@@ -278,6 +278,8 @@ extern cvar_t *r_texture_lod; /* lod_bias */ extern cvar_t *r_displayrefresh;+extern cvar_t *gl_use_arrays;+ extern cvar_t *gl_screenshot; extern cvar_t *gl_screenshot_jpeg_quality;Index: src/ref_gl/gl_rmain.c===================================================================--- src/ref_gl/gl_rmain.c (Revision 9719)+++ src/ref_gl/gl_rmain.c (Arbeitskopie)@@ -84,6 +84,8 @@ cvar_t *r_ext_max_anisotropy; cvar_t *r_texture_lod; /* lod_bias */+cvar_t *gl_use_arrays;+ cvar_t *gl_screenshot; cvar_t *gl_screenshot_jpeg_quality;@@ -967,6 +969,8 @@ r_ext_max_anisotropy = ri.Cvar_Get("r_ext_max_anisotropy", "0", 0, NULL); r_texture_lod = ri.Cvar_Get("r_texture_lod", "0", CVAR_ARCHIVE, NULL);+ gl_use_arrays = ri.Cvar_Get("gl_use_arrays", "1", CVAR_ARCHIVE, "Use vertex, color and normal arrays");+ gl_screenshot = ri.Cvar_Get("gl_screenshot", "jpg", CVAR_ARCHIVE, "png, jpg or tga are valid screenshot formats"); gl_screenshot_jpeg_quality = ri.Cvar_Get("gl_screenshot_jpeg_quality", "75", CVAR_ARCHIVE, "jpeg quality in percent for jpeg screenshots");Index: src/ref_gl/gl_mesh_md2.c===================================================================--- src/ref_gl/gl_mesh_md2.c (Revision 9719)+++ src/ref_gl/gl_mesh_md2.c (Arbeitskopie)@@ -90,62 +90,101 @@ GL_LerpVerts(paliashdr->num_xyz, v, ov, lerp, move, frontv, backv);- /* setup vertex array */- qglEnableClientState(GL_VERTEX_ARRAY);- qglVertexPointer(3, GL_FLOAT, 16, s_lerped); /* padded for SIMD */+ if (gl_use_arrays) {+ /* setup vertex array */+ qglEnableClientState(GL_VERTEX_ARRAY);+ qglVertexPointer(3, GL_FLOAT, 16, s_lerped); /* padded for SIMD */- /* setup normal array */- qglEnableClientState(GL_NORMAL_ARRAY);- qglNormalPointer(GL_FLOAT, 0, normalArray);+ /* setup normal array */+ qglEnableClientState(GL_NORMAL_ARRAY);+ qglNormalPointer(GL_FLOAT, 0, normalArray);- na = normalArray;- if (backlerp == 0.0)- for (i = 0; i < paliashdr->num_xyz; v++, i++) {- /* get current normals */- newNormal = r_avertexnormals[v->lightnormalindex];+ na = normalArray;+ if (backlerp == 0.0)+ for (i = 0; i < paliashdr->num_xyz; v++, i++) {+ /* get current normals */+ newNormal = r_avertexnormals[v->lightnormalindex];- *na++ = newNormal[0];- *na++ = newNormal[1];- *na++ = newNormal[2];- } else- for (i = 0; i < paliashdr->num_xyz; v++, ov++, i++) {- /* normalize interpolated normals? */- /* no: probably too much to compute */- oldNormal = r_avertexnormals[ov->lightnormalindex];- newNormal = r_avertexnormals[v->lightnormalindex];+ *na++ = newNormal[0];+ *na++ = newNormal[1];+ *na++ = newNormal[2];+ } else+ for (i = 0; i < paliashdr->num_xyz; v++, ov++, i++) {+ /* normalize interpolated normals? */+ /* no: probably too much to compute */+ oldNormal = r_avertexnormals[ov->lightnormalindex];+ newNormal = r_avertexnormals[v->lightnormalindex];- *na++ = backlerp * oldNormal[0] + frontlerp * newNormal[0];- *na++ = backlerp * oldNormal[1] + frontlerp * newNormal[1];- *na++ = backlerp * oldNormal[2] + frontlerp * newNormal[2];- }+ *na++ = backlerp * oldNormal[0] + frontlerp * newNormal[0];+ *na++ = backlerp * oldNormal[1] + frontlerp * newNormal[1];+ *na++ = backlerp * oldNormal[2] + frontlerp * newNormal[2];+ }- if (qglLockArraysEXT != 0)- qglLockArraysEXT(0, paliashdr->num_xyz);+ if (qglLockArraysEXT != 0)+ qglLockArraysEXT(0, paliashdr->num_xyz);- while (1) {- /* get the vertex count and primitive type */- count = *order++;- if (!count)- break; /* done */- if (count < 0) {- count = -count;- qglBegin(GL_TRIANGLE_FAN);- } else {- qglBegin(GL_TRIANGLE_STRIP);+ while (1) {+ /* get the vertex count and primitive type */+ count = *order++;+ if (!count)+ break; /* done */+ if (count < 0) {+ count = -count;+ qglBegin(GL_TRIANGLE_FAN);+ } else {+ qglBegin(GL_TRIANGLE_STRIP);+ }+ do {+ /* texture coordinates come from the draw list */+ qglTexCoord2f(((float *) order)[0], ((float *) order)[1]);+ order += 2;++ qglArrayElement(*order++);+ } while (--count);++ qglEnd(); }- do {- /* texture coordinates come from the draw list */- qglTexCoord2f(((float *) order)[0], ((float *) order)[1]);- order += 2;- qglArrayElement(*order++);- } while (--count);+ if (qglUnlockArraysEXT != 0)+ qglUnlockArraysEXT();+ } else {+ int index_xyz;+ float light, alpha;+ newNormal = r_avertexnormals[v->lightnormalindex];- qglEnd();+ if (currententity->flags & RF_TRANSLUCENT)+ alpha = currententity->alpha;+ else+ alpha = 1.0;++ while (1){+ /* get the vertex count and primitive type */+ count = *order++;+ if (!count)+ break; /* done */+ if (count < 0){+ count = -count;+ qglBegin(GL_TRIANGLE_FAN);+ } else {+ qglBegin(GL_TRIANGLE_STRIP);+ }++ do {+ /* texture coordinates come from the draw list */+ qglTexCoord2f(((float *)order)[0], ((float *)order)[1]);+ index_xyz = order[2];+ order += 3;++ /* normals and vertexes come from the frame list */+ light = newNormal[verts[index_xyz].lightnormalindex];++ qglColor4f(light, light, light, alpha);+ qglVertex3fv(s_lerped[index_xyz]);+ } while (--count);++ qglEnd();+ } }-- if (qglUnlockArraysEXT != 0)- qglUnlockArraysEXT(); } /**