Module: Demos Branch: master Commit: 0e8cc1401af97aea13eeaf3a2aaea430ddd1529e URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=0e8cc1401af97aea13eeaf3a2aaea430ddd1529e
Author: Christian Authmann <[email protected]> Date: Mon Aug 9 08:30:20 2010 -0600 geartrain: render back faces properly Signed-off-by: Brian Paul <[email protected]> --- 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); _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
