home *** CD-ROM | disk | FTP | other *** search
/ OpenGL Superbible / OpenGL_Superbible_Waite_Group_Press_1996.iso / book / chapt3 / teapot / teapot.c next >
C/C++ Source or Header  |  1995-09-29  |  1KB  |  59 lines

  1. // teapot.c
  2. // 3D shape drawing with the aux library
  3.  
  4. #include <windows.h>    // Standard windows header
  5. #include <gl\gl.h>        // Opengl library
  6. #include <gl\glaux.h>    // AUX library
  7.  
  8.  
  9. // The window has changed size
  10. void CALLBACK ChangeSize(GLsizei w, GLsizei h)
  11.     {
  12.     // Prevent a divide by zero
  13.     if(h == 0)
  14.         h = 1;
  15.  
  16.     // Set viewport to match window size
  17.     glViewport(0, 0, w, h);
  18.  
  19.     // Reset the coordinate system
  20.     glLoadIdentity();
  21.  
  22.     // Setup clipping volume
  23.     if (w <= h) 
  24.         glOrtho (-100.0f, 100.0f, -100.0f, 100.0f*h/w, -100.0, 100.0);
  25.     else 
  26.         glOrtho (-100.0f, 100*w/h, -100.0f, 100.0f, -100.0, 1.00);
  27.     }
  28.  
  29. // Draw the teapot
  30. void CALLBACK RenderScene(void)
  31.     {
  32.     // Set clear color to blue and clear the screen
  33.     glClearColor(0.0f, 0.0f, 1.0f, 0.0f);
  34.     glClear(GL_COLOR_BUFFER_BIT);
  35.  
  36.     // Set drawing color to red and draw teapot
  37.     glColor3f(1.0f, 0.0f, 0.0f);
  38.     auxWireTeapot(50.0f);
  39.     
  40.     glFlush();
  41.     }
  42.  
  43.  
  44. // Main program body
  45. void main(void)
  46.     {
  47.     // AUX window setup
  48.     auxInitDisplayMode(AUX_SINGLE | AUX_RGBA);
  49.     auxInitPosition(100,100,250,250);
  50.     auxInitWindow("3D Wire-Frame Teapot");
  51.  
  52.     // Set window resize function
  53.     auxReshapeFunc(ChangeSize);
  54.  
  55.     // Start main loop
  56.     auxMainLoop(RenderScene);
  57.     }
  58.  
  59.