Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Feb 21st, 2012  |  syntax: None  |  size: 3.87 KB  |  views: 6  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1.  
  2. // This code was created by Jeff Molofee '99 (ported to Linux/GLUT by Richard Campbell '99)
  3. //
  4. // If you've found this code useful, please let me know.
  5. //
  6. // Visit me at www.demonews.com/hosted/nehe
  7. // (email Richard Campbell at ulmont@bellsouth.net)
  8. //
  9. #include <GL/glut.h>    // Header File For The GLUT Library
  10. #include <GL/gl.h>      // Header File For The OpenGL32 Library
  11. #include <GL/glu.h>     // Header File For The GLu32 Library
  12. #include <unistd.h>     // Header file for sleeping.
  13.  
  14. /* ascii code for the escape key */
  15. #define ESCAPE 27
  16.  
  17. /* The number of our GLUT window */
  18. int window;
  19.  
  20. /* A general OpenGL initialization function.  Sets all of the initial parameters. */
  21. void InitGL(int Width, int Height)              // We call this right after our OpenGL window is created.
  22. {
  23.   glClearColor(0.0f, 0.0f, 0.0f, 0.0f);         // This Will Clear The Background Color To Black
  24.   glClearDepth(1.0);                            // Enables Clearing Of The Depth Buffer
  25.   glDepthFunc(GL_LESS);                         // The Type Of Depth Test To Do
  26.   glEnable(GL_DEPTH_TEST);                      // Enables Depth Testing
  27.   glShadeModel(GL_SMOOTH);                      // Enables Smooth Color Shading
  28.  
  29.   glMatrixMode(GL_PROJECTION);
  30.   glLoadIdentity();                             // Reset The Projection Matrix
  31.  
  32.   gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f);     // Calculate The Aspect Ratio Of The Window
  33.  
  34.   glMatrixMode(GL_MODELVIEW);
  35. }
  36.  
  37. /* The function called when our window is resized (which shouldn't happen, because we're fullscreen) */
  38. void ReSizeGLScene(int Width, int Height)
  39. {
  40.   if (Height==0)                                // Prevent A Divide By Zero If The Window Is Too Small
  41.     Height=1;
  42.  
  43.   glViewport(0, 0, Width, Height);              // Reset The Current Viewport And Perspective Transformation
  44.  
  45.   glMatrixMode(GL_PROJECTION);
  46.   glLoadIdentity();
  47.  
  48.   gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f);
  49.   glMatrixMode(GL_MODELVIEW);
  50. }
  51.  
  52. /* The main drawing function. */
  53. void DrawGLScene()
  54. {
  55.   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);           // Clear The Screen And The Depth Buffer
  56.   glLoadIdentity();                             // Reset The View
  57.  
  58.   // since this is double buffered, swap the buffers to display what just got drawn.
  59.   glutSwapBuffers();
  60. }
  61.  
  62. /* The function called whenever a key is pressed. */
  63. void keyPressed(unsigned char key, int x, int y)
  64. {
  65.     /* avoid thrashing this procedure */
  66.     usleep(100);
  67.  
  68.     /* If escape is pressed, kill everything. */
  69.     if (key == ESCAPE)
  70.     {
  71.         /* shut down our window */
  72.         glutDestroyWindow(window);
  73.        
  74.         /* exit the program...normal termination. */
  75.         exit(0);                  
  76.     }
  77. }
  78.  
  79. int main(int argc, char **argv)
  80. {  
  81.   /* Initialize GLUT state - glut will take any command line arguments that pertain to it or
  82.      X Windows - look at its documentation at http://reality.sgi.com/mjk/spec3/spec3.html */  
  83.   glutInit(&argc, argv);  
  84.  
  85.   /* Select type of Display mode:  
  86.      Double buffer
  87.      RGBA color
  88.      Alpha components supported
  89.      Depth buffer */  
  90.   glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH);  
  91.  
  92.   /* get a 640 x 480 window */
  93.   glutInitWindowSize(640, 480);  
  94.  
  95.   /* the window starts at the upper left corner of the screen */
  96.   glutInitWindowPosition(0, 0);  
  97.  
  98.   /* Open a window */  
  99.   window = glutCreateWindow("Jeff Molofee's GL Code Tutorial ... NeHe '99");  
  100.  
  101.   /* Register the function to do all our OpenGL drawing. */
  102.   glutDisplayFunc(&DrawGLScene);  
  103.  
  104.   /* Go fullscreen.  This is as soon as possible. */
  105.   glutFullScreen();
  106.  
  107.   /* Even if there are no events, redraw our gl scene. */
  108.   glutIdleFunc(&DrawGLScene);
  109.  
  110.   /* Register the function called when our window is resized. */
  111.   glutReshapeFunc(&ReSizeGLScene);
  112.  
  113.   /* Register the function called when the keyboard is pressed. */
  114.   glutKeyboardFunc(&keyPressed);
  115.  
  116.   /* Initialize our window. */
  117.   InitGL(640, 480);
  118.  
  119.   /* Start Event Processing Engine */  
  120.   glutMainLoop();  
  121.  
  122.   return 1;
  123. }
clone this paste RAW Paste Data