Advertisement
CzarnyBarszcz

planteki_laby

Mar 21st, 2021
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.15 KB | None | 0 0
  1.  
  2. #include <windows.h>
  3. #ifdef __APPLE__
  4. #include <GLUT/glut.h>
  5. #else
  6. #include <GL/glut.h>
  7. #endif
  8.  
  9. #include <stdlib.h>
  10.  
  11. static int slices = 16;
  12. static int stacks = 16;
  13.  
  14. /* GLUT callback Handlers */
  15.  
  16. static void resize(int width, int height)
  17. {
  18. const float ar = (float) width / (float) height;
  19.  
  20. glViewport(0, 0, width, height);
  21. glMatrixMode(GL_PROJECTION);
  22. glLoadIdentity();
  23. // glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);
  24. glOrtho(-4*ar,4*ar,-4,4,0,100);
  25. glMatrixMode(GL_MODELVIEW);
  26. glLoadIdentity() ;
  27. }
  28.  
  29. static void display(void)
  30. {
  31. const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
  32. const double a = t*90.0;
  33.  
  34. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  35. glColor3d(1,0,0);
  36.  
  37. glPushMatrix();
  38. glTranslated(0,0,-3);
  39. //glRotated(60,1,0,0);
  40. //glRotated(a,0,0,1);
  41. glColor3d(1,0,0);
  42. glutSolidSphere(0.2,slices,stacks);
  43. glPushMatrix();
  44. glRotated(a/4,0,0,1);
  45. glColor3d(0,0,1);
  46. glTranslated(0.0,0.5,0);
  47. glScaled(1.0,0.5,1.0);
  48. glRotated(a,1,0.5,1);
  49. //glutSolidSphere(0.2,slices,stacks);
  50. glutWireSphere(0.2,slices,stacks);
  51. glColor3d(0,1,1);
  52. glRotated(a*2,0,0,1);
  53. glTranslated(0.0,0.0,0.5);
  54. glutSolidTeapot(0.1);
  55. glPopMatrix();
  56. glPushMatrix();
  57. glRotated(90,0,0,1);
  58. glRotated(a*0.5,0,0,1);
  59. glTranslated(0.0,2,0);
  60. glColor3d(0,0,0);
  61. glutSolidSphere(0.5,slices,stacks);
  62. glColor3d(1,1,0);
  63. glRotated(90,1,0,0);
  64. glScaled(1,1,0.1);
  65. glutSolidTorus(0.1,0.7,slices,stacks);
  66.  
  67. glPopMatrix();
  68. glPopMatrix();
  69. /*
  70. glPushMatrix();
  71. glTranslated(-0.5,0,-3);
  72. //glRotated(60,1,0,0);
  73. //glRotated(a,0,0,1);
  74. glColor3d(1,0,1);
  75. glutSolidSphere(0.2,slices,stacks);
  76. glColor3d(0,1,1);
  77. glTranslated(-0.5,0,0);
  78. glutSolidSphere(0.2,slices,stacks);
  79. glPopMatrix();
  80. */
  81. glutSwapBuffers();
  82. }
  83.  
  84.  
  85. static void key(unsigned char key, int x, int y)
  86. {
  87. switch (key)
  88. {
  89. case 27 :
  90. case 'q':
  91. exit(0);
  92. break;
  93.  
  94. case '+':
  95. slices++;
  96. stacks++;
  97. break;
  98.  
  99. case '-':
  100. if (slices>3 && stacks>3)
  101. {
  102. slices--;
  103. stacks--;
  104. }
  105. break;
  106. }
  107.  
  108. glutPostRedisplay();
  109. }
  110.  
  111. static void idle(void)
  112. {
  113. glutPostRedisplay();
  114. }
  115.  
  116. const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
  117. const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
  118. const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
  119. const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
  120.  
  121. const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
  122. const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };
  123. const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
  124. const GLfloat high_shininess[] = { 100.0f };
  125.  
  126. /* Program entry point */
  127.  
  128. int main(int argc, char *argv[])
  129. {
  130. glutInit(&argc, argv);
  131. glutInitWindowSize(640,480);
  132. glutInitWindowPosition(10,10);
  133. glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
  134.  
  135. glutCreateWindow("GLUT Shapes");
  136.  
  137. glutReshapeFunc(resize);
  138. glutDisplayFunc(display);
  139. glutKeyboardFunc(key);
  140. glutIdleFunc(idle);
  141.  
  142. glClearColor(1,1,1,1);
  143. glEnable(GL_CULL_FACE);
  144. glCullFace(GL_BACK);
  145.  
  146. glEnable(GL_DEPTH_TEST);
  147. glDepthFunc(GL_LESS);
  148.  
  149. glEnable(GL_LIGHT0);
  150. glEnable(GL_NORMALIZE);
  151. glEnable(GL_COLOR_MATERIAL);
  152. glEnable(GL_LIGHTING);
  153.  
  154. glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
  155. glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
  156. glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
  157. glLightfv(GL_LIGHT0, GL_POSITION, light_position);
  158.  
  159. glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
  160. glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
  161. glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
  162. glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
  163.  
  164. glutMainLoop();
  165.  
  166. return EXIT_SUCCESS;
  167. }
  168.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement