GLfloat tunnelLength;
GLfloat tunnelWidth;
+ int polys;
} blocktube_configuration;
}
}
-static void cube_vertices(float x, float y, float z, int wire);
+static int cube_vertices(float x, float y, float z, int wire);
ENTRYPOINT void reshape_blocktube (ModeInfo *mi, int width, int height);
fprintf(stderr, "%s: out of memory\n", progname);
exit(1);
}
- lp = &lps[MI_SCREEN(mi)];
}
lp = &lps[MI_SCREEN(mi)];
lp->block_dlist = glGenLists (1);
glNewList (lp->block_dlist, GL_COMPILE);
- cube_vertices(0.15, 1.2, 5.25, wire);
+ lp->polys = cube_vertices(0.15, 1.2, 5.25, wire);
glEndList ();
#if defined( I_HAVE_XPM )
glMatrixMode(GL_MODELVIEW);
}
-static void cube_vertices(float x, float y, float z, int wire)
+static int cube_vertices(float x, float y, float z, int wire)
{
+ int polygon_count = 0;
float x2, y2, z2, nv = 0.7;
x2 = x/2;
y2 = y/2;
glTexCoord2f(1.0, 0.0); glVertex3f( x2, y2, z2);
glTexCoord2f(1.0, 1.0); glVertex3f( x2, -y2, z2);
glTexCoord2f(0.0, 1.0); glVertex3f(-x2, -y2, z2);
+ polygon_count++;
glEnd();
glNormal3f(0, 0, -nv);
glTexCoord2f(1.0, 1.0); glVertex3f( x2, -y2, -z2);
glTexCoord2f(0.0, 1.0); glVertex3f( x2, y2, -z2);
glTexCoord2f(0.0, 0.0); glVertex3f(-x2, y2, -z2);
+ polygon_count++;
glEnd();
glNormal3f(0, nv, 0);
glTexCoord2f(0.0, 0.0); glVertex3f( x2, y2, -z2);
glTexCoord2f(1.0, 0.0); glVertex3f( x2, y2, z2);
glTexCoord2f(1.0, 1.0); glVertex3f(-x2, y2, z2);
+ polygon_count++;
glEnd();
glNormal3f(0, -nv, 0);
glTexCoord2f(0.0, 1.0); glVertex3f(-x2, -y2, z2);
glTexCoord2f(0.0, 0.0); glVertex3f( x2, -y2, z2);
glTexCoord2f(1.0, 0.0); glVertex3f( x2, -y2, -z2);
+ polygon_count++;
glEnd();
- if (wire) return;
+ if (wire) return polygon_count;
glNormal3f(nv, 0, 0);
glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
glTexCoord2f(1.0, 1.0); glVertex3f( x2, -y2, z2);
glTexCoord2f(0.0, 1.0); glVertex3f( x2, y2, z2);
glTexCoord2f(0.0, 0.0); glVertex3f( x2, y2, -z2);
+ polygon_count++;
glEnd();
glNormal3f(-nv, 0, 0);
glTexCoord2f(1.0, 0.0); glVertex3f(-x2, y2, -z2);
glTexCoord2f(1.0, 1.0); glVertex3f(-x2, y2, z2);
glTexCoord2f(0.0, 1.0); glVertex3f(-x2, -y2, z2);
+ polygon_count++;
glEnd();
+
+ return polygon_count;
}
static void draw_block(ModeInfo *mi, entity *ent)
{
blocktube_configuration *lp = &lps[MI_SCREEN(mi)];
glCallList (lp->block_dlist);
+ mi->polygon_count += lp->polys;
}
ENTRYPOINT void
if (!lp->glx_context)
return;
+ mi->polygon_count = 0;
+
glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context));
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);