X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fglx%2Fbubble3d.c;h=3e0062ec7ec95d103fa17afb93b01493027e11aa;hb=3f438031d610c7e15fd33876a879b97e290e05fb;hp=dd5b68e4af1425be28aa990305fff72a5f7e44e9;hpb=ce3185de9d9705e259f2b60dd4b5509007fa17d4;p=xscreensaver diff --git a/hacks/glx/bubble3d.c b/hacks/glx/bubble3d.c index dd5b68e4..3e0062ec 100644 --- a/hacks/glx/bubble3d.c +++ b/hacks/glx/bubble3d.c @@ -1,9 +1,8 @@ /* -*- Mode: C; tab-width: 4 -*- */ /* bubble3d.c - 3D bubbles */ -#if !defined( lint ) && !defined( SABER ) +#if 0 static const char sccsid[] = "@(#)bubble3d.c 4.11 98/06/16 xlockmore"; - #endif /*- @@ -48,6 +47,7 @@ typedef struct bubble { GLfloat *nudge_angle_incr; /* Amount by which we increase each nudge * angle in each frame. */ + GLfloat color[4]; } bubble; /* Should be taken care of already... but just in case */ @@ -99,6 +99,18 @@ glb_bubble_new(GLfloat x, GLfloat y, GLfloat z, GLfloat scale, if (b == 0) return 0; + if (glb_config.bubble_colour[0] == -1.0) { + b->color[0] = ((float) (NRAND(100)) / 100.0); + b->color[1] = ((float) (NRAND(100)) / 100.0); + b->color[2] = ((float) (NRAND(100)) / 100.0); + } else { + b->color[0] = glb_config.bubble_colour[0]; + b->color[1] = glb_config.bubble_colour[1]; + b->color[2] = glb_config.bubble_colour[2]; + } + b->color[3] = glb_config.bubble_colour[3]; + + b->contributions = (GLfloat *) malloc(sizeof (GLfloat) * nr_vertices * glb_config.nr_nudge_axes); if (b->contributions == 0) { @@ -241,6 +253,9 @@ glb_bubble_draw(void *bb) /* Draw the bubble. */ glBegin(GL_TRIANGLES); + + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, b->color); + for (i = 0; i < nr_triangles; ++i) { glNormal3fv(new_vertices[triangles[i][0]]); glVertex3fv(new_vertices[triangles[i][0]]); @@ -252,6 +267,7 @@ glb_bubble_draw(void *bb) glEnd(); glPopMatrix(); (void) free((void *) new_vertices); + glb_config.polygon_count += nr_triangles; } /* Return y value. */