Demos (master): geartrain: render back faces properly
Brian Paul
brianp at kemper.freedesktop.org
Mon Aug 9 07:30:29 PDT 2010
Module: Demos
Branch: master
Commit: 0e8cc1401af97aea13eeaf3a2aaea430ddd1529e
URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=0e8cc1401af97aea13eeaf3a2aaea430ddd1529e
Author: Christian Authmann <christian at authmann.de>
Date: Mon Aug 9 08:30:20 2010 -0600
geartrain: render back faces properly
Signed-off-by: Brian Paul <brianp at vmware.com>
---
src/demos/geartrain.c | 25 +++++++++++++------------
1 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/demos/geartrain.c b/src/demos/geartrain.c
index 55bdc21..66889a4 100644
--- a/src/demos/geartrain.c
+++ b/src/demos/geartrain.c
@@ -407,40 +407,40 @@ gear (GLint j, char type[], GLfloat radius, GLfloat width,
glEnd ();
- /* draw outward faces of teeth */
+ /* draw outward faces of teeth. The visible faces are the backfaces, for testing purposes */
glBegin (GL_QUAD_STRIP);
for (i = 0; i < teeth; i++)
{
angle = i * 2.0 * M_PI / teeth;
- glNormal3f (cos (angle - 0.5*da), sin (angle - 0.5*da), 0.0);
- glVertex3f (r1 * cos (angle), r1 * sin (angle), width * fraction);
+ glNormal3f (-cos (angle - 0.5*da), -sin (angle - 0.5*da), 0.0);
glVertex3f (r1 * cos (angle), r1 * sin (angle), -width * fraction);
+ glVertex3f (r1 * cos (angle), r1 * sin (angle), width * fraction);
u = (r2_front+r2_back)/2.0 * cos (angle + da) - r1 * cos (angle);
v = (r2_front+r2_back)/2.0 * sin (angle + da) - r1 * sin (angle);
len = sqrt (u * u + v * v);
u /= len;
v /= len;
- glNormal3f (v, -u, 0.0);
- glVertex3f (r2_front * cos (angle + da), r2_front * sin (angle + da), width * fraction);
+ glNormal3f (-v, u, 0.0);
glVertex3f (r2_back * cos (angle + da), r2_back * sin (angle + da), -width * fraction);
- glNormal3f (cos (angle + 1.5*da), sin (angle + 1.5*da), 0.0);
- glVertex3f (r2_front * cos (angle + 2 * da), r2_front * sin (angle + 2 * da), width * fraction);
+ glVertex3f (r2_front * cos (angle + da), r2_front * sin (angle + da), width * fraction);
+ glNormal3f (-cos (angle + 1.5*da), -sin (angle + 1.5*da), 0.0);
glVertex3f (r2_back * cos (angle + 2 * da), r2_back * sin (angle + 2 * da), -width * fraction);
+ glVertex3f (r2_front * cos (angle + 2 * da), r2_front * sin (angle + 2 * da), width * fraction);
u = r1 * cos (angle + 3 * da) - (r2_front+r2_back)/2.0 * cos (angle + 2 * da);
v = r1 * sin (angle + 3 * da) - (r2_front+r2_back)/2.0 * sin (angle + 2 * da);
len = sqrt (u * u + v * v);
u /= len;
v /= len;
- glNormal3f (v, -u, 0.0);
- glVertex3f (r1 * cos (angle + 3 * da), r1 * sin (angle + 3 * da), width * fraction);
+ glNormal3f (-v, u, 0.0);
glVertex3f (r1 * cos (angle + 3 * da), r1 * sin (angle + 3 * da), -width * fraction);
- glNormal3f (cos (angle + 3.5*da), sin (angle + 3.5*da), 0.0);
+ glVertex3f (r1 * cos (angle + 3 * da), r1 * sin (angle + 3 * da), width * fraction);
+ glNormal3f (-cos (angle + 3.5*da), -sin (angle + 3.5*da), 0.0);
}
- glNormal3f (cos (-0.5*da), sin (-0.5*da), 0.0);
- glVertex3f (r1 * cos (0), r1 * sin (0), width * fraction);
+ glNormal3f (-cos (-0.5*da), -sin (-0.5*da), 0.0);
glVertex3f (r1 * cos (0), r1 * sin (0), -width * fraction);
+ glVertex3f (r1 * cos (0), r1 * sin (0), width * fraction);
glEnd ();
}
@@ -954,6 +954,7 @@ init (void)
int i;
glShadeModel(GL_FLAT);
+ glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 1);
glClearColor (background[0], background[1], background[2], 1.0F);
glClearIndex ((GLfloat) 0.0);
More information about the mesa-commit
mailing list