Example #1
0
static void ltgl_init(void)
{
  glu_quadric_object = gluNewQuadric();
  if (glu_quadric_object == NULL)
  {
    fprintf(stderr, "ltgl_init: gluNewQuadric() failed\n");
    exit(EXIT_FAILURE);
  }
  gluQuadricCallback(glu_quadric_object, GLU_ERROR, glu_quadric_error);
  gluQuadricNormals(glu_quadric_object, GLU_FLAT);
  /* Ausgabefenster definieren */
  glutInitWindowPosition(0, 0);
  glutInitWindowSize(640, 480);
  /* Renderkontext mit Z-Buffer, Doublebuffer fuer RGB-Modus anfordern. */
  glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE);

  if (glutCreateWindow(prgname) == GL_FALSE)
    exit(1);
  
  /* Callback Funktionen vereinbaren */
  glutReshapeFunc(ltgl_reshape);
  glutKeyboardFunc(ltgl_key);
  glutSpecialFunc(ltgl_special_key);
  glutDisplayFunc(ltgl_display);
  glutMouseFunc(ltgl_mouse);
  glutMotionFunc(ltgl_motion);
  /* enable z-buffer */
  glEnable(GL_DEPTH_TEST);
  /* Vorder- u. Rueckseite der Polygone nur als Randlinien darstellen */
  glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
}
Example #2
0
	inline
	void Key::makeQuadric() {
		_quadricObj = gluNewQuadric();
		gluQuadricCallback(_quadricObj, GLU_ERROR, 0);
		gluQuadricDrawStyle(_quadricObj, GLU_FILL);
		gluQuadricOrientation(_quadricObj, GLU_OUTSIDE); 
		gluQuadricNormals(_quadricObj, GLU_SMOOTH);
		gluQuadricTexture(_quadricObj, GL_FALSE);
	}
Example #3
0
static void init(void) 
{
   GLUquadricObj *qobj;
   GLfloat mat_ambient[] = { 0.5, 0.5, 0.5, 1.0 };
   GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
   GLfloat mat_shininess[] = { 50.0 };
   GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };
   GLfloat model_ambient[] = { 0.5, 0.5, 0.5, 1.0 };

   glClearColor(0.0, 0.0, 0.0, 0.0);

   glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
   glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
   glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
   glLightfv(GL_LIGHT0, GL_POSITION, light_position);
   glLightModelfv(GL_LIGHT_MODEL_AMBIENT, model_ambient);

   glEnable(GL_LIGHTING);
   glEnable(GL_LIGHT0);
   glEnable(GL_DEPTH_TEST);

/*  Create 4 display lists, each with a different quadric object.
 *  Different drawing styles and surface normal specifications
 *  are demonstrated.
 */
   startList = glGenLists(4);
   qobj = gluNewQuadric();
   gluQuadricCallback(qobj, GLU_ERROR, 
                      (GLvoid (CALLBACK*) ()) errorCallback);

   gluQuadricDrawStyle(qobj, GLU_FILL); /* smooth shaded */
   gluQuadricNormals(qobj, GLU_SMOOTH);
   glNewList(startList, GL_COMPILE);
      gluSphere(qobj, 0.75, 15, 10);
   glEndList();

   gluQuadricDrawStyle(qobj, GLU_FILL); /* flat shaded */
   gluQuadricNormals(qobj, GLU_FLAT);
   glNewList(startList+1, GL_COMPILE);
      gluCylinder(qobj, 0.5, 0.3, 1.0, 15, 5);
   glEndList();

   gluQuadricDrawStyle(qobj, GLU_LINE); /* all polygons wireframe */
   gluQuadricNormals(qobj, GLU_NONE);
   glNewList(startList+2, GL_COMPILE);
      gluDisk(qobj, 0.25, 1.0, 20, 4);
   glEndList();

   gluQuadricDrawStyle(qobj, GLU_SILHOUETTE); /* boundary only  */
   gluQuadricNormals(qobj, GLU_NONE);
   glNewList(startList+3, GL_COMPILE);
      gluPartialDisk(qobj, 0.0, 1.0, 20, 4, 0.0, 225.0);
   glEndList();

   gluDeleteQuadric(qobj);
}
/* Creates a new quadric. */
JNIEXPORT jlong JNICALL Java_OpenGL_GLUQuadric_newQuadric
(JNIEnv *env, jobject obj)
{
    GLUquadric *newQuadric = gluNewQuadric();

    if (NULL != newQuadric) {
        gluQuadricCallback(newQuadric, GLU_ERROR, error);
    }
    return FROM_POINTER(newQuadric);
}
Example #5
0
void GLElbowFlexWidget::initializeGL() {

    glClearColor(0.0, 0.0, 0.0, 0.0);

    list = glGenLists(LIST_LENGTH);

    GLUquadricObj* qobj = gluNewQuadric();

    gluQuadricCallback(qobj, GLU_ERROR, errorCallback);

    headSilhouette(qobj);

    headSolid(qobj);

    gluDeleteQuadric(qobj);
}
/* Creates a new quadric. */
JNIEXPORT jlong JNICALL Java_OpenGL_GLUQuadric_newQuadric
  (JNIEnv *env, jobject obj)
{
	GLUquadric *newQuadric = gluNewQuadric();

	if (NULL != newQuadric) {
		/* The cast is required because the gluQuadricCallback
		 * lies about it's type; _GLUfuncptr is declared not to take
		 * any arguments, although gluQuadricCallback takes an
		 * integer.
		 */
		gluQuadricCallback(newQuadric, GLU_ERROR, 
				   (_GLUfuncptr)error);
	}
	return FROM_POINTER(newQuadric);
}
Example #7
0
GLint makelampdlists(Bool ismono)
{
  GLint mainlistindex;
  int iterator;
  GLint mono_on, mono_off, redon, redoff, yellowon, yellowoff;
  GLint fourbank1, fourbank2, fourbank3, fourbank4;
  GLint elevenbank1, elevenbank2, elevenbank3, elevenbank4;
  GLint elevenbank5, elevenbank6, elevenbank7, elevenbank8;
  GLint elevenbank9, elevenbank10, elevenbank11;
  GLUquadricObj * circlebank;

  GLfloat elevenbankoffset = 0.35;

GLfloat fourbankverts[20][3] = {
{-6.975000, 1.700000, 1.000000}, {-7.491623, 1.597237, 1.000000},
{-7.929594, 1.304594, 1.000000}, {-8.222237, 0.866623, 1.000000}, 
{-8.325000, 0.350000, 1.000000}, {-8.325000, -0.350000, 1.000000},
{-8.222237, -0.866623, 1.000000}, {-7.929594, -1.304594, 1.000000},
{-7.491623, -1.597237, 1.000000}, {-6.975000, -1.700000, 1.000000},
{6.975000, -1.700000, 1.000000}, {7.491623, -1.597237, 1.000000},
{7.929594, -1.304594, 1.000000}, {8.222237, -0.866623, 1.000000},
{8.325000, -0.350000, 1.000000}, {8.325000, 0.350000, 1.000000},
{8.222237, 0.866623, 1.000000}, {7.929594, 1.304594, 1.000000},
{7.491623, 1.597237, 1.000000}, {6.975000, 1.700000, 1.000000}};

GLfloat elevenbankverts[20][3] = {
{-5.650000, 1.700000, 1.000000}, {-6.166623, 1.597237, 1.000000},
{-6.604594, 1.304594, 1.000000}, {-6.897237, 0.866623, 1.000000},
{-7.000000, 0.350000, 1.000000}, {-7.000000, -0.350000, 1.000000},
{-6.897237, -0.866623, 1.000000}, {-6.604594, -1.304594, 1.000000},
{-6.166623, -1.597237, 1.000000}, {-5.650000, -1.700000, 1.000000},
{5.650000, -1.700000, 1.000000}, {6.166623, -1.597237, 1.000000},
{6.604594, -1.304594, 1.000000}, {6.897237, -0.866623, 1.000000},
{7.000000, -0.350000, 1.000000}, {7.000000, 0.350000, 1.000000},
{6.897237, 0.866623, 1.000000}, {6.604594, 1.304594, 1.000000},
{6.166623, 1.597237, 1.000000}, {5.650000, 1.700000, 1.000000}};


   GLfloat mono_on_ambient[]  = {0.0, 0.0, 0.0, 1.0}; 
   GLfloat mono_on_diffuse[]  = {0.0, 0.0, 0.0, 1.0}; 
   GLfloat mono_on_specular[]  = {0., 0., 0., 1.}; 
   GLfloat mono_on_emission[]  = {1.0, 1.0, 1.0, 1.0}; 
   GLfloat mono_on_shininess  = 0.0; 
   GLfloat mono_off_ambient[]  = {0., 0., 0.0, 1.}; 
   GLfloat mono_off_diffuse[]  = {0., 0., 0.0, 1.}; 
   GLfloat mono_off_specular[]  = {0.6, 0.6, 0.6, 1.0}; 
   GLfloat mono_off_emission[]  = {0., 0., 0., 1.}; 
   GLfloat mono_off_shininess = 0.7; 
 
  GLfloat redon_ambient[] = {0.0, 0.0, 0., 1.0};
  GLfloat redon_diffuse[] = {0.0, 0.0, 0.0, 1.0};
  GLfloat redon_specular[] = {0.0, 0.0, 0.0, 1.0};
  GLfloat redon_emission[] = {1.0, 0.0, 0., 1.0};
  GLfloat redon_shininess = 0.0;
  GLfloat redoff_ambient[] = {0.15, 0.05, 0.05, 1.};
  GLfloat redoff_diffuse[] = {0.15, 0.05, 0.05, 1.};
  GLfloat redoff_specular[] = {0.7, 0.7, 0.7, 1.0};
  GLfloat redoff_emission[] = {0., 0., 0., 1.};
  GLfloat redoff_shininess = 0.7;
 
   GLfloat yellowon_ambient[]  = {0.0, 0.0, 0.0, 1.0}; 
   GLfloat yellowon_diffuse[]  = {0.0, 0.0, 0.0, 1.0}; 
   GLfloat yellowon_specular[]  = {0., 0., 0., 1.}; 
   GLfloat yellowon_emission[]  = {1.0, 1.0, 0.0, 1.0}; 
   GLfloat yellowon_shininess  = 0.0; 
   GLfloat yellowoff_ambient[]  = {0.15, 0.15, 0.0, 1.}; 
   GLfloat yellowoff_diffuse[]  = {0.15, 0.15, 0.0, 1.}; 
   GLfloat yellowoff_specular[]  = {0.6, 0.6, 0.2, 1.0}; 
   GLfloat yellowoff_emission[]  = {0., 0., 0., 1.}; 
   GLfloat yellowoff_shininess = 0.7; 
 
  circlebank = gluNewQuadric();
  gluQuadricCallback(circlebank, GLU_ERROR, (_GLUfuncptr)errorCallback);
   gluQuadricDrawStyle(circlebank, GLU_FILL);
   gluQuadricNormals(circlebank, GLU_SMOOTH);
 

  if (!ismono)
   {
   redon = glGenLists(1);
  glNewList(redon, GL_COMPILE);
  glMaterialfv(GL_FRONT, GL_AMBIENT, redon_ambient);
   glMaterialfv(GL_FRONT, GL_DIFFUSE, redon_diffuse);
   glMaterialfv(GL_FRONT, GL_SPECULAR, redon_specular);
   glMaterialfv(GL_FRONT, GL_EMISSION, redon_emission);
   glMaterialf(GL_FRONT, GL_SHININESS, redon_shininess * 128.0);
   glEndList();
   redoff = glGenLists(1);
  glNewList(redoff, GL_COMPILE);
  glMaterialfv(GL_FRONT, GL_AMBIENT, redoff_ambient);
   glMaterialfv(GL_FRONT, GL_DIFFUSE, redoff_diffuse);
   glMaterialfv(GL_FRONT, GL_SPECULAR, redoff_specular);
   glMaterialfv(GL_FRONT, GL_EMISSION, redoff_emission);
   glMaterialf(GL_FRONT, GL_SHININESS, redoff_shininess * 128.0);
   glEndList();
  yellowon = glGenLists(1);
  glNewList(yellowon, GL_COMPILE);
  glMaterialfv(GL_FRONT, GL_AMBIENT, yellowon_ambient);
   glMaterialfv(GL_FRONT, GL_DIFFUSE, yellowon_diffuse);
   glMaterialfv(GL_FRONT, GL_SPECULAR, yellowon_specular);
   glMaterialfv(GL_FRONT, GL_EMISSION, yellowon_emission);
   glMaterialf(GL_FRONT, GL_SHININESS, yellowon_shininess * 128.0);
   glEndList();
   yellowoff = glGenLists(1);
  glNewList(yellowoff, GL_COMPILE);
  glMaterialfv(GL_FRONT, GL_AMBIENT, yellowoff_ambient);
   glMaterialfv(GL_FRONT, GL_DIFFUSE, yellowoff_diffuse);
   glMaterialfv(GL_FRONT, GL_SPECULAR, yellowoff_specular);
   glMaterialfv(GL_FRONT, GL_EMISSION, yellowoff_emission);
   glMaterialf(GL_FRONT, GL_SHININESS, yellowoff_shininess * 128.0);
   glEndList();
   }
   else
   {
  mono_on = glGenLists(1);
  glNewList(mono_on, GL_COMPILE);
  glMaterialfv(GL_FRONT, GL_AMBIENT, mono_on_ambient);
   glMaterialfv(GL_FRONT, GL_DIFFUSE, mono_on_diffuse);
   glMaterialfv(GL_FRONT, GL_SPECULAR, mono_on_specular);
   glMaterialfv(GL_FRONT, GL_EMISSION, mono_on_emission);
   glMaterialf(GL_FRONT, GL_SHININESS, mono_on_shininess * 128.0);
   glEndList();
   mono_off = glGenLists(1);
  glNewList(mono_off, GL_COMPILE);
  glMaterialfv(GL_FRONT, GL_AMBIENT, mono_off_ambient);
   glMaterialfv(GL_FRONT, GL_DIFFUSE, mono_off_diffuse);
   glMaterialfv(GL_FRONT, GL_SPECULAR, mono_off_specular);
   glMaterialfv(GL_FRONT, GL_EMISSION, mono_off_emission);
   glMaterialf(GL_FRONT, GL_SHININESS, mono_off_shininess * 128.0);
   glEndList();
  redon = yellowon = mono_on;
  redoff = yellowoff = mono_off;
   }

   fourbank1 = glGenLists(1);
   glNewList(fourbank1, GL_COMPILE);
   glPushMatrix();
  glTranslatef(-0.6, 0.0, 0.0);
   glBegin(GL_POLYGON);
 glVertex3f(-FOURBANKWIDTH + 0.2, LIGHTBANKHEIGHT, 1.);
  for (iterator = 0; iterator < 10; iterator ++)
    {
      glVertex3fv(fourbankverts[iterator]);
    }
  glVertex3f(-FOURBANKWIDTH + 0.2, -LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList();

   fourbank2 = glGenLists(1);
   glNewList(fourbank2, GL_COMPILE);

   glPushMatrix();
   glTranslatef(-0.2, 0.0, 0.0);

  glBegin(GL_QUADS);
  glVertex3f(-FOURBANKWIDTH + 0.2, LIGHTBANKHEIGHT, 1.);
  glVertex3f(-FOURBANKWIDTH + 0.2, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(0., -LIGHTBANKHEIGHT, 1.);
  glVertex3f(0., LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList();


   fourbank3 = glGenLists(1);
  glNewList(fourbank3, GL_COMPILE);
  glPushMatrix();
  glTranslatef(0.2, 0.0, 0.0);

  glBegin(GL_QUADS);
  glVertex3f(0., LIGHTBANKHEIGHT, 1.);
  glVertex3f(0., -LIGHTBANKHEIGHT, 1.);
  glVertex3f(FOURBANKWIDTH - 0.2, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(FOURBANKWIDTH - 0.2, LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList(); 

   fourbank4 = glGenLists(1);
  glNewList(fourbank4, GL_COMPILE);
  glPushMatrix();
  glTranslatef(0.6, 0.0, 0.0);
   glBegin(GL_POLYGON);
 glVertex3f(FOURBANKWIDTH - 0.2, -LIGHTBANKHEIGHT, 1.);
  for (iterator = 10; iterator < 20; iterator ++)
    {
      glVertex3fv(fourbankverts[iterator]);
    }
  glVertex3f(FOURBANKWIDTH - 0.2, LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList(); 

   elevenbank1 = glGenLists(1);
   glNewList(elevenbank1, GL_COMPILE);
   glPushMatrix();
  glTranslatef((-elevenbankoffset * 5) - 0.15, 0.0, 0.0);
   glBegin(GL_POLYGON);
 glVertex3f((-ELEVENBANKWIDTH * 9) + 0.1, LIGHTBANKHEIGHT, 1.);
  for (iterator = 0; iterator < 10; iterator ++)
    {
      glVertex3fv(elevenbankverts[iterator]);
    }
  glVertex3f((-ELEVENBANKWIDTH * 9) + 0.1, -LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList();

  elevenbank2 = glGenLists(1);
  glNewList(elevenbank2, GL_COMPILE);
  glPushMatrix();
  glTranslatef(-elevenbankoffset * 4, 0.0, 0.0);
  glBegin(GL_QUADS);
  glVertex3f(-ELEVENBANKWIDTH * 9, LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH * 9, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH * 7, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH * 7, LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList();

  elevenbank3 = glGenLists(1);
  glNewList(elevenbank3, GL_COMPILE);
  glPushMatrix();
  glTranslatef(-elevenbankoffset * 3, 0.0, 0.0);
  glBegin(GL_QUADS);
  glVertex3f(-ELEVENBANKWIDTH * 7, LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH * 7, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH * 5, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH * 5, LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList();

  elevenbank4 = glGenLists(1);
  glNewList(elevenbank4, GL_COMPILE);
  glPushMatrix();
   glTranslatef(-elevenbankoffset * 2, 0.0, 0.0);
 glBegin(GL_QUADS);
  glVertex3f(-ELEVENBANKWIDTH * 5, LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH * 5, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH * 3, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH * 3, LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList();

  elevenbank5 = glGenLists(1);
  glNewList(elevenbank5, GL_COMPILE);
  glPushMatrix();
  glTranslatef(-elevenbankoffset, 0.0, 0.0);
  glBegin(GL_QUADS);
  glVertex3f(-ELEVENBANKWIDTH * 3, LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH * 3, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH, LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList();

  elevenbank6 = glGenLists(1);
  glNewList(elevenbank6, GL_COMPILE);
  glPushMatrix();
  glBegin(GL_QUADS);
  glVertex3f(-ELEVENBANKWIDTH, LIGHTBANKHEIGHT, 1.);
  glVertex3f(-ELEVENBANKWIDTH, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH, LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList();

  elevenbank7 = glGenLists(1);
  glNewList(elevenbank7, GL_COMPILE);
  glPushMatrix();
  glTranslatef(elevenbankoffset, 0.0, 0.0);
  glBegin(GL_QUADS);
  glVertex3f(ELEVENBANKWIDTH, LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH * 3, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH * 3, LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList();

  elevenbank8 = glGenLists(1);
  glNewList(elevenbank8, GL_COMPILE);
  glPushMatrix();
  glTranslatef(elevenbankoffset * 2, 0.0, 0.0);
  glBegin(GL_QUADS);
  glVertex3f(ELEVENBANKWIDTH * 3, LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH * 3, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH * 5, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH * 5, LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList();

  elevenbank9 = glGenLists(1);
  glNewList(elevenbank9, GL_COMPILE);
  glPushMatrix();
  glTranslatef(elevenbankoffset * 3, 0.0, 0.0);
  glBegin(GL_QUADS);
  glVertex3f(ELEVENBANKWIDTH * 5, LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH * 5, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH * 7, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH * 7, LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList();

  elevenbank10 = glGenLists(1);
  glNewList(elevenbank10, GL_COMPILE);
  glPushMatrix();
  glTranslatef(elevenbankoffset * 4, 0.0, 0.0);
  glBegin(GL_QUADS);
  glVertex3f(ELEVENBANKWIDTH * 7, LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH * 7, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH * 9, -LIGHTBANKHEIGHT, 1.);
  glVertex3f(ELEVENBANKWIDTH * 9, LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList();

   elevenbank11 = glGenLists(1);
  glNewList(elevenbank11, GL_COMPILE);
  glPushMatrix();
  glTranslatef((elevenbankoffset * 5) + 0.15, 0.0, 0.0);
   glBegin(GL_POLYGON);
 glVertex3f((ELEVENBANKWIDTH * 9) - 0.1, -LIGHTBANKHEIGHT, 1.);
  for (iterator = 10; iterator < 20; iterator ++)
    {
      glVertex3fv(elevenbankverts[iterator]);
    }
  glVertex3f((ELEVENBANKWIDTH * 9) - 0.1, LIGHTBANKHEIGHT, 1.);
  glEnd();
  glPopMatrix();
  glEndList(); 

/* ----- end setup lists, begin actual time-referenced banks to be used in display function */

    mainlistindex = glGenLists(52);

/* single hour banks (second row) */

  glNewList (mainlistindex + HR1OFFSET + 0, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glCallList(redoff);
  glCallList(fourbank1);
  glCallList(fourbank2);
   glCallList(fourbank3);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();


  glNewList (mainlistindex + HR1OFFSET + 1, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glCallList(redon);
  glCallList(fourbank1);
  glCallList(redoff);
  glCallList(fourbank2);
   glCallList(fourbank3);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();


  glNewList (mainlistindex + HR1OFFSET + 2, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glCallList(redon);
  glCallList(fourbank1);
  glCallList(fourbank2);
  glCallList(redoff);
   glCallList(fourbank3);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();


  glNewList (mainlistindex + HR1OFFSET + 3, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glCallList(redon);
  glCallList(fourbank1);
  glCallList(fourbank2);
   glCallList(fourbank3);
  glCallList(redoff);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();

  glNewList (mainlistindex + HR1OFFSET + 4, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glCallList(redon);
  glCallList(fourbank1);
 glCallList(fourbank2);
   glCallList(fourbank3);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();



/* ----- five hour banks (top row)---------------------- */

  glNewList (mainlistindex + HR5OFFSET + 0, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glTranslatef(0., 5., 0.);
  glCallList(redoff);
  glCallList(fourbank1);
  glCallList(fourbank2);
   glCallList(fourbank3);
 glCallList(fourbank4);
glPopMatrix();
  glEndList();


  glNewList (mainlistindex + HR5OFFSET + 1, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glTranslatef(0., 5., 0.);
  glCallList(redon);
  glCallList(fourbank1);
  glCallList(redoff);
  glCallList(fourbank2);
   glCallList(fourbank3);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();


  glNewList (mainlistindex + HR5OFFSET + 2, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glTranslatef(0., 5., 0.);
  glCallList(redon);
  glCallList(fourbank1);
  glCallList(fourbank2);
  glCallList(redoff);
   glCallList(fourbank3);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();


  glNewList (mainlistindex + HR5OFFSET + 3, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glTranslatef(0., 5., 0.);
  glCallList(redon);
  glCallList(fourbank1);
  glCallList(fourbank2);
   glCallList(fourbank3);
  glCallList(redoff);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();


  glNewList (mainlistindex + HR5OFFSET + 4, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glTranslatef(0., 5., 0.);
  glCallList(redon);
  glCallList(fourbank1);
  glCallList(fourbank2);
   glCallList(fourbank3);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();


/* ------- single minute banks (bottom row)------------------------------ */

  glNewList (mainlistindex + MIN1OFFSET + 0, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glTranslatef(0., -10., 0.);
  glCallList(yellowoff);
  glCallList(fourbank1);
  glCallList(fourbank2);
   glCallList(fourbank3);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();

  glNewList (mainlistindex + MIN1OFFSET + 1, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glTranslatef(0., -10., 0.);
  glCallList(yellowon);
  glCallList(fourbank1);
  glCallList(yellowoff);
  glCallList(fourbank2);
   glCallList(fourbank3);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();

  glNewList (mainlistindex + MIN1OFFSET + 2, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glTranslatef(0., -10., 0.);
  glCallList(yellowon);
  glCallList(fourbank1);
  glCallList(fourbank2);
  glCallList(yellowoff);
   glCallList(fourbank3);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();

  glNewList (mainlistindex + MIN1OFFSET + 3, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glTranslatef(0., -10., 0.);
  glCallList(yellowon);
  glCallList(fourbank1);
  glCallList(fourbank2);
   glCallList(fourbank3);
  glCallList(yellowoff);
 glCallList(fourbank4);
  glPopMatrix();
  glEndList();

  glNewList (mainlistindex + MIN1OFFSET + 4, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
 glPushMatrix();
  glTranslatef(0., -10., 0.);
  glCallList(yellowon);
  glCallList(fourbank1);
  glCallList(fourbank2);
   glCallList(fourbank3);
 glCallList(fourbank4);
 glPopMatrix();
  glEndList();

/* -----five minute banks (third row) ----------------------- */

  glNewList(mainlistindex + MIN5OFFSET + 0, GL_COMPILE);
    glNormal3f(0.0, 0.0, 1.0);
    glPushMatrix();
    glTranslatef(0., -5., 0.);
    glCallList(yellowoff);
    glCallList(elevenbank1);
     glCallList(elevenbank2);
     glCallList(elevenbank4);
     glCallList(elevenbank5);
     glCallList(elevenbank7);
     glCallList(elevenbank8);
     glCallList(elevenbank10);
     glCallList(elevenbank11);
    glCallList(redoff);
    glCallList(elevenbank3);
    glCallList(elevenbank6);
    glCallList(elevenbank9);
   glPopMatrix();
    glEndList();

  glNewList(mainlistindex + MIN5OFFSET + 1, GL_COMPILE);
    glNormal3f(0.0, 0.0, 1.0);
    glPushMatrix();
    glTranslatef(0., -5., 0.);
    glCallList(yellowon);
    glCallList(elevenbank1);
    glCallList(yellowoff);
     glCallList(elevenbank2);
     glCallList(elevenbank4);
     glCallList(elevenbank5);
     glCallList(elevenbank7);
     glCallList(elevenbank8);
     glCallList(elevenbank10);
     glCallList(elevenbank11);
    glCallList(redoff);
    glCallList(elevenbank3);
    glCallList(elevenbank6);
    glCallList(elevenbank9);
    glPopMatrix();
    glEndList();

  glNewList(mainlistindex + MIN5OFFSET + 2, GL_COMPILE);
    glNormal3f(0.0, 0.0, 1.0);
    glPushMatrix();
    glTranslatef(0., -5., 0.);
    glCallList(yellowon);
    glCallList(elevenbank1);
     glCallList(elevenbank2);
    glCallList(yellowoff);
     glCallList(elevenbank4);
     glCallList(elevenbank5);
     glCallList(elevenbank7);
     glCallList(elevenbank8);
     glCallList(elevenbank10);
     glCallList(elevenbank11);
    glCallList(redoff);
    glCallList(elevenbank3);
    glCallList(elevenbank6);
    glCallList(elevenbank9);
    glPopMatrix();
    glEndList();

  glNewList(mainlistindex + MIN5OFFSET + 3, GL_COMPILE);
    glNormal3f(0.0, 0.0, 1.0);
   glPushMatrix();
    glTranslatef(0., -5., 0.);
    glCallList(yellowon);
    glCallList(elevenbank1);
     glCallList(elevenbank2);
    glCallList(yellowoff);
     glCallList(elevenbank4);
     glCallList(elevenbank5);
     glCallList(elevenbank7);
     glCallList(elevenbank8);
     glCallList(elevenbank10);
     glCallList(elevenbank11);
    glCallList(redon);
    glCallList(elevenbank3);
     glCallList(redoff);
   glCallList(elevenbank6);
    glCallList(elevenbank9);
    glPopMatrix();
    glEndList();

  glNewList(mainlistindex + MIN5OFFSET + 4, GL_COMPILE);
    glNormal3f(0.0, 0.0, 1.0);
    glPushMatrix();
    glTranslatef(0., -5., 0.);
    glCallList(yellowon);
    glCallList(elevenbank1);
     glCallList(elevenbank2);
     glCallList(elevenbank4);
    glCallList(yellowoff);
     glCallList(elevenbank5);
     glCallList(elevenbank7);
     glCallList(elevenbank8);
     glCallList(elevenbank10);
     glCallList(elevenbank11);
    glCallList(redon);
    glCallList(elevenbank3);
     glCallList(redoff);
   glCallList(elevenbank6);
    glCallList(elevenbank9);
    glPopMatrix();
    glEndList();

  glNewList(mainlistindex + MIN5OFFSET + 5, GL_COMPILE);
    glNormal3f(0.0, 0.0, 1.0);
    glPushMatrix();
    glTranslatef(0., -5., 0.);
    glCallList(yellowon);
    glCallList(elevenbank1);
      glCallList(elevenbank2);
     glCallList(elevenbank4);
     glCallList(elevenbank5);
   glCallList(yellowoff);
     glCallList(elevenbank7);
     glCallList(elevenbank8);
     glCallList(elevenbank10);
     glCallList(elevenbank11);
    glCallList(redon);
    glCallList(elevenbank3);
     glCallList(redoff);
   glCallList(elevenbank6);
    glCallList(elevenbank9);
   glPopMatrix();
    glEndList();

  glNewList(mainlistindex + MIN5OFFSET + 6, GL_COMPILE);
    glNormal3f(0.0, 0.0, 1.0);
    glPushMatrix();
    glTranslatef(0., -5., 0.);
    glCallList(yellowon);
    glCallList(elevenbank1);
     glCallList(elevenbank2);
     glCallList(elevenbank4);
     glCallList(elevenbank5);
    glCallList(yellowoff);
     glCallList(elevenbank7);
     glCallList(elevenbank8);
     glCallList(elevenbank10);
     glCallList(elevenbank11);
    glCallList(redon);
    glCallList(elevenbank3);
   glCallList(elevenbank6);
     glCallList(redoff);
    glCallList(elevenbank9);
    glPopMatrix();
    glEndList();

  glNewList(mainlistindex + MIN5OFFSET + 7, GL_COMPILE);
    glNormal3f(0.0, 0.0, 1.0);
    glPushMatrix();
    glTranslatef(0., -5., 0.);
    glCallList(yellowon);
    glCallList(elevenbank1);
     glCallList(elevenbank2);
     glCallList(elevenbank4);
     glCallList(elevenbank5);
     glCallList(elevenbank7);
    glCallList(yellowoff);
     glCallList(elevenbank8);
     glCallList(elevenbank10);
     glCallList(elevenbank11);
    glCallList(redon);
    glCallList(elevenbank3);
   glCallList(elevenbank6);
     glCallList(redoff);
    glCallList(elevenbank9);
    glPopMatrix();
    glEndList();

  glNewList(mainlistindex + MIN5OFFSET + 8, GL_COMPILE);
    glNormal3f(0.0, 0.0, 1.0);
    glPushMatrix();
    glTranslatef(0., -5., 0.);
    glCallList(yellowon);
    glCallList(elevenbank1);
     glCallList(elevenbank2);
     glCallList(elevenbank4);
     glCallList(elevenbank5);
     glCallList(elevenbank7);
     glCallList(elevenbank8);
    glCallList(yellowoff);
     glCallList(elevenbank10);
     glCallList(elevenbank11);
    glCallList(redon);
    glCallList(elevenbank3);
   glCallList(elevenbank6);
     glCallList(redoff);
    glCallList(elevenbank9);
    glPopMatrix();
    glEndList();

  glNewList(mainlistindex + MIN5OFFSET + 9, GL_COMPILE);
    glNormal3f(0.0, 0.0, 1.0);
    glPushMatrix();
    glTranslatef(0., -5., 0.);
    glCallList(yellowon);
    glCallList(elevenbank1);
     glCallList(elevenbank2);
     glCallList(elevenbank4);
     glCallList(elevenbank5);
     glCallList(elevenbank7);
     glCallList(elevenbank8);
    glCallList(yellowoff);
     glCallList(elevenbank10);
     glCallList(elevenbank11);
    glCallList(redon);
    glCallList(elevenbank3);
   glCallList(elevenbank6);
    glCallList(elevenbank9);
   glPopMatrix();
    glEndList();

  glNewList(mainlistindex + MIN5OFFSET + 10, GL_COMPILE);
    glNormal3f(0.0, 0.0, 1.0);
    glPushMatrix();
    glTranslatef(0., -5., 0.);
    glCallList(yellowon);
    glCallList(elevenbank1);
     glCallList(elevenbank2);
     glCallList(elevenbank4);
     glCallList(elevenbank5);
     glCallList(elevenbank7);
     glCallList(elevenbank8);
     glCallList(elevenbank10);
    glCallList(yellowoff);
     glCallList(elevenbank11);
    glCallList(redon);
    glCallList(elevenbank3);
   glCallList(elevenbank6);
    glCallList(elevenbank9);
   glPopMatrix();
    glEndList();

  glNewList(mainlistindex + MIN5OFFSET + 11, GL_COMPILE);
    glNormal3f(0.0, 0.0, 1.0);
   glPushMatrix();
    glTranslatef(0., -5., 0.);
    glCallList(yellowon);
    glCallList(elevenbank1);
     glCallList(elevenbank2);
     glCallList(elevenbank4);
     glCallList(elevenbank5);
     glCallList(elevenbank7);
     glCallList(elevenbank8);
     glCallList(elevenbank10);
     glCallList(elevenbank11);
    glCallList(redon);
    glCallList(elevenbank3);
   glCallList(elevenbank6);
    glCallList(elevenbank9);
    glPopMatrix();
    glEndList();

/* -----seconds banks (topknot) ------------------------------- */

  glNewList(mainlistindex + SECOFFSET + 0, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
 glPushMatrix();
  glTranslatef(0., 10., 1.);
  glCallList(yellowoff);
  gluDisk(circlebank, 0, 2.2, 24, 16);
 glPopMatrix();
  glEndList();  

  glNewList(mainlistindex + SECOFFSET + 1, GL_COMPILE);
  glNormal3f(0.0, 0.0, 1.0);
  glPushMatrix();
  glTranslatef(0., 10., 1.);
  glCallList(yellowon);
  gluDisk(circlebank, 0, 2.2, 24, 16);
 glPopMatrix();
  glEndList();  

  handleGLerrors("makelampdlists");

  return (mainlistindex);

}
Example #8
0
GLint makebclockhousing(void){
  GLuint dlistindex;
GLUquadricObj * pole;
  int iterator;
GLuint banklistindex;
GLuint connectlistindex;
GLuint secconnectlistindex;

GLfloat steel_ambient[] = {0.19225, 0.19225, 0.19225, 1.0};
GLfloat steel_diffuse[] = {0.50754, 0.50754, 0.50754, 1.0};
GLfloat steel_specular[] = {0.508273, 0.508273, 0.508273, 1.0};
GLfloat steel_emission[] = {0.0, 0.0, 0.0, 1.0};
GLfloat steel_shininess = 0.4;

   banklistindex = makebankdlist();
   connectlistindex = makeconnectdlist();
   secconnectlistindex = makesecconnectdlist();

   pole = gluNewQuadric();
   gluQuadricCallback(pole, GLU_ERROR, (_GLUfuncptr)errorCallback);

   gluQuadricDrawStyle(pole, GLU_FILL); 
   gluQuadricNormals(pole, GLU_SMOOTH);
 
  dlistindex = glGenLists(1);
  glNewList(dlistindex, GL_COMPILE);

   glMaterialfv(GL_FRONT, GL_AMBIENT, steel_ambient);
   glMaterialfv(GL_FRONT, GL_DIFFUSE, steel_diffuse);
   glMaterialfv(GL_FRONT, GL_SPECULAR, steel_specular);
   glMaterialfv(GL_FRONT, GL_EMISSION, steel_emission);
   glMaterialf(GL_FRONT, GL_SHININESS, steel_shininess * 128.0);

   /* draw banks, including seconds */
   glPushMatrix();
   glTranslatef(0.0, -10., 0.);
   for (iterator = 0; iterator < 4; iterator++)
     {
   glCallList(banklistindex);
  glTranslatef(0.0, 5.0, 0.);
     }
   glTranslatef(0.0, 0., -1.0);
   gluCylinder(pole, 2.5, 2.5, 2, 24, 16);
   glTranslatef( 0.0, 0.0, 2.0);
   gluDisk(pole, 0, 2.5, 24, 16);
   glPopMatrix();

   /* draw connectors */
   glPushMatrix();
   glTranslatef(0., -7.5, 0.);
   for (iterator = 0; iterator < 3; iterator++)
     {
   glPushMatrix();
   glTranslatef(-4.5, 0., 0.);
   glCallList(connectlistindex);
   glPopMatrix();
   glPushMatrix();
   glTranslatef(4.5, 0., 0.);
   glCallList(connectlistindex);
   glPopMatrix();
   glTranslatef(0., 5.0, 0.);
}
   glTranslatef(0., -0.15, 0.);
   glCallList(secconnectlistindex);
   glPopMatrix();

   /* draw pole */
   glPushMatrix();
   glRotatef(90.0, 1.0, 0.0, 0.0);
   glTranslatef(0.0, 0.0, 12.0);
   gluCylinder(pole, 0.75, 0.75, 20, 16, 12);
   glPopMatrix();

  glEndList();

  handleGLerrors("makebclockhousing");
  return dlistindex;


}