[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11390] trunk/blender/source/blender/src/ drawarmature.c: Small optimalization of drawing bones ( drawsolidcube_size and drawcube_size) uses OpenGL displaylists.

Jiri Hnidek jiri.hnidek at tul.cz
Fri Jul 27 15:58:41 CEST 2007


Revision: 11390
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11390
Author:   jiri
Date:     2007-07-27 15:58:41 +0200 (Fri, 27 Jul 2007)

Log Message:
-----------
Small optimalization of drawing bones (drawsolidcube_size and drawcube_size) uses OpenGL displaylists.

Modified Paths:
--------------
    trunk/blender/source/blender/src/drawarmature.c

Modified: trunk/blender/source/blender/src/drawarmature.c
===================================================================
--- trunk/blender/source/blender/src/drawarmature.c	2007-07-27 09:37:16 UTC (rev 11389)
+++ trunk/blender/source/blender/src/drawarmature.c	2007-07-27 13:58:41 UTC (rev 11390)
@@ -103,77 +103,75 @@
 
 static void drawsolidcube_size(float xsize, float ysize, float zsize)
 {
+	static GLuint displist=0;
 	float n[3];
 	
 	glScalef(xsize, ysize, zsize);
 	
 	n[0]=0; n[1]=0; n[2]=0;
-	glBegin(GL_QUADS);
-	n[0]= -1.0;
-	glNormal3fv(n); 
-	glVertex3fv(cube[0]); glVertex3fv(cube[1]); glVertex3fv(cube[2]); glVertex3fv(cube[3]);
-	n[0]=0;
-	glEnd();
+
+	if(displist==0) {
+		displist= glGenLists(1);
+		glNewList(displist, GL_COMPILE_AND_EXECUTE);
+
+		glBegin(GL_QUADS);
+		n[0]= -1.0;
+		glNormal3fv(n); 
+		glVertex3fv(cube[0]); glVertex3fv(cube[1]); glVertex3fv(cube[2]); glVertex3fv(cube[3]);
+		n[0]=0;
+		n[1]= -1.0;
+		glNormal3fv(n); 
+		glVertex3fv(cube[0]); glVertex3fv(cube[4]); glVertex3fv(cube[5]); glVertex3fv(cube[1]);
+		n[1]=0;
+		n[0]= 1.0;
+		glNormal3fv(n); 
+		glVertex3fv(cube[4]); glVertex3fv(cube[7]); glVertex3fv(cube[6]); glVertex3fv(cube[5]);
+		n[0]=0;
+		n[1]= 1.0;
+		glNormal3fv(n); 
+		glVertex3fv(cube[7]); glVertex3fv(cube[3]); glVertex3fv(cube[2]); glVertex3fv(cube[6]);
+		n[1]=0;
+		n[2]= 1.0;
+		glNormal3fv(n); 
+		glVertex3fv(cube[1]); glVertex3fv(cube[5]); glVertex3fv(cube[6]); glVertex3fv(cube[2]);
+		n[2]=0;
+		n[2]= -1.0;
+		glNormal3fv(n); 
+		glVertex3fv(cube[7]); glVertex3fv(cube[4]); glVertex3fv(cube[0]); glVertex3fv(cube[3]);
+		glEnd();
+
+		glEndList();
+	}
+	else glCallList(displist);
 	
-	glBegin(GL_QUADS);
-	n[1]= -1.0;
-	glNormal3fv(n); 
-	glVertex3fv(cube[0]); glVertex3fv(cube[4]); glVertex3fv(cube[5]); glVertex3fv(cube[1]);
-	n[1]=0;
-	glEnd();
-	
-	glBegin(GL_QUADS);
-	n[0]= 1.0;
-	glNormal3fv(n); 
-	glVertex3fv(cube[4]); glVertex3fv(cube[7]); glVertex3fv(cube[6]); glVertex3fv(cube[5]);
-	n[0]=0;
-	glEnd();
-	
-	glBegin(GL_QUADS);
-	n[1]= 1.0;
-	glNormal3fv(n); 
-	glVertex3fv(cube[7]); glVertex3fv(cube[3]); glVertex3fv(cube[2]); glVertex3fv(cube[6]);
-	n[1]=0;
-	glEnd();
-	
-	glBegin(GL_QUADS);
-	n[2]= 1.0;
-	glNormal3fv(n); 
-	glVertex3fv(cube[1]); glVertex3fv(cube[5]); glVertex3fv(cube[6]); glVertex3fv(cube[2]);
-	n[2]=0;
-	glEnd();
-	
-	glBegin(GL_QUADS);
-	n[2]= -1.0;
-	glNormal3fv(n); 
-	glVertex3fv(cube[7]); glVertex3fv(cube[4]); glVertex3fv(cube[0]); glVertex3fv(cube[3]);
-	glEnd();
-	
 }
 
 static void drawcube_size(float xsize, float ysize, float zsize)
 {
+	static GLuint displist=0;
 	
 	glScalef(xsize, ysize, zsize);
 	
-	glBegin(GL_LINE_STRIP);
-	glVertex3fv(cube[0]); glVertex3fv(cube[1]);glVertex3fv(cube[2]); glVertex3fv(cube[3]);
-	glVertex3fv(cube[0]); glVertex3fv(cube[4]);glVertex3fv(cube[5]); glVertex3fv(cube[6]);
-	glVertex3fv(cube[7]); glVertex3fv(cube[4]);
-	glEnd();
+	if(displist==0) {
+		displist= glGenLists(1);
+		glNewList(displist, GL_COMPILE_AND_EXECUTE);
+
+		glBegin(GL_LINE_STRIP);
+		glVertex3fv(cube[0]); glVertex3fv(cube[1]);glVertex3fv(cube[2]); glVertex3fv(cube[3]);
+		glVertex3fv(cube[0]); glVertex3fv(cube[4]);glVertex3fv(cube[5]); glVertex3fv(cube[6]);
+		glVertex3fv(cube[7]); glVertex3fv(cube[4]);
+		glEnd();
+		
+		glBegin(GL_LINES);
+		glVertex3fv(cube[1]); glVertex3fv(cube[5]);
+		glVertex3fv(cube[2]); glVertex3fv(cube[6]);
+		glVertex3fv(cube[3]); glVertex3fv(cube[7]);
+		glEnd();
+
+		glEndList();
+	}
+	else glCallList(displist);
 	
-	glBegin(GL_LINE_STRIP);
-	glVertex3fv(cube[1]); glVertex3fv(cube[5]);
-	glEnd();
-	
-	glBegin(GL_LINE_STRIP);
-	glVertex3fv(cube[2]); glVertex3fv(cube[6]);
-	glEnd();
-	
-	glBegin(GL_LINE_STRIP);
-	glVertex3fv(cube[3]); glVertex3fv(cube[7]);
-	glEnd();
-	
 }
 
 





More information about the Bf-blender-cvs mailing list