Advertisement
Guest User

Untitled

a guest
Feb 21st, 2012
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.87 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement