All pastes #620420 Raw Edit

Unnamed

public c v1 · immutable
·published 2007-07-15 13:56 UTC
rendered paste body
Index: 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(); } /**