diff --git a/ss/LightBounce.cc b/ss/LightBounce.cc index 0ba6e0b..b04c71c 100644 --- a/ss/LightBounce.cc +++ b/ss/LightBounce.cc @@ -16,7 +16,7 @@ using namespace std; #define SIZE 5 #define STRIDE_MULTIPLIER 1.0; #define ZOOM 12.0 -#define ORB_RADIUS 1.5 +#define ORB_RADIUS 2.5 #define ORB_SPEED 20.0 LightBounceBox::LightBounceBox(LogoBox * lb, @@ -131,21 +131,24 @@ LightBounce::LightBounce(SSMain * _SSMain) : SSMode(_SSMain) m_orb_dir[2] = cos(gamma); /* Create the orb display list */ - // TODO: fix lighting - // TODO: make it more of a "light" object and not a sphere m_orb_dl = glGenLists(1); glNewList(m_orb_dl, GL_COMPILE); - GLfloat mat[] = {1, 1, 0.2, 0.8}; + /* save lights, materials, and blending information */ + glPushAttrib(GL_LIGHTING_BIT | GL_COLOR_BUFFER_BIT); + GLfloat mat[] = {0.7, 0.7, 0.14, 0.6}; glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mat); + GLfloat specular[] = {0.15, 0.15, 0.03, 1.0}; + glMaterialfv(GL_FRONT, GL_SPECULAR, specular); GLUquadric * quad = gluNewQuadric(); gluQuadricNormals(quad, GL_TRUE); - glPushAttrib(GL_LIGHTING_BIT); glPushMatrix(); glLoadIdentity(); - GLfloat light_pos[] = {0, 0, 1, 0}; + GLfloat light_pos[] = {0, 0, 0, 1}; glLightfv(GL_LIGHT0, GL_POSITION, light_pos); glPopMatrix(); - gluSphere(quad, ORB_RADIUS, 16, 8); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR); + gluSphere(quad, ORB_RADIUS, 20, 12); glPopAttrib(); glEndList();