Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.43 KB | None | 0 0
  1. #include "materials.h"
  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  float katRef = 30;
  12. static  float skupRef = 2;
  13. static  float kat = 0;
  14.  
  15. const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
  16. const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
  17. const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
  18. const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
  19.  
  20. const GLfloat *mat_ambient    = PolishedGoldAmbient;
  21. const GLfloat *mat_diffuse    = PolishedGoldDiffuse;
  22. const GLfloat *mat_specular   = PolishedGoldSpecular;
  23. GLfloat high_shininess = PolishedGoldShininess;
  24.  
  25. GLfloat fPozycja_reflektora[4] = {0.0f, 0.0f, -4.f, 1.0f};
  26. GLfloat fKierunek_reflektora[4] = {0.f, 1.2f, -6.f, 1.0f};
  27. GLfloat fSlabe_swiatlo[] = {0.55f, 0.0f, 0.0f, 1.0f};
  28. GLfloat fMocne_swiatlo[] = {1.0f, 0.0f, 0.0f, 1.0f};
  29.  
  30.  
  31.  
  32.  
  33. static int slices = 16;
  34. static int stacks = 16;
  35.  
  36. /* GLUT callback Handlers */
  37.  
  38. static void resize(int width, int height)
  39. {
  40.     const float ar = (float) width / (float) height;
  41.  
  42.     glViewport(0, 0, width, height);
  43.     glMatrixMode(GL_PROJECTION);
  44.     glLoadIdentity();
  45.     glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);
  46.  
  47.     glMatrixMode(GL_MODELVIEW);
  48.     glLoadIdentity() ;
  49. }
  50.  
  51. static void display(void)
  52. {
  53.     const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
  54.     const double a = t*90.0;
  55.  
  56.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  57.     glColor3d(1,0,0);
  58.  
  59.  
  60.  
  61.     glPushMatrix();
  62.         glTranslated(-2.4,0,-6);
  63.         glutSolidCube(1);
  64.     glPopMatrix();
  65.  
  66.      glPushMatrix();
  67.         glTranslated(0,0,-6);
  68.         glutSolidCone(1,1,20,20);
  69.     glPopMatrix();
  70.  
  71.  
  72.     glPushMatrix();
  73.         glTranslated(2.4,0,-6);
  74.         glutSolidTorus(0.2,0.8,20,20);
  75.     glPopMatrix();
  76.  
  77.  
  78.  
  79.     glutSwapBuffers();
  80. }
  81.  
  82.  
  83. static void key(unsigned char key, int x, int y)
  84. {
  85.     switch (key)
  86.     {
  87.         case 27 :
  88.         case 'q':
  89.             exit(0);
  90.             break;
  91.  
  92.  
  93.  
  94.         case 'a':
  95.             fPozycja_reflektora[0]-=0.1;
  96.             glLightfv(GL_LIGHT1, GL_POSITION, fPozycja_reflektora);
  97.             break;
  98.  
  99.          case 'd':
  100.             fPozycja_reflektora[0]+=0.1;
  101.             glLightfv(GL_LIGHT1, GL_POSITION, fPozycja_reflektora);
  102.             break;
  103.  
  104.         case 'w':
  105.             fPozycja_reflektora[1]+=0.1;
  106.             glLightfv(GL_LIGHT1, GL_POSITION, fPozycja_reflektora);
  107.             break;
  108.  
  109.         case 's':
  110.             fPozycja_reflektora[1]-=0.1;
  111.             glLightfv(GL_LIGHT1, GL_POSITION, fPozycja_reflektora);
  112.             break;
  113.         case '+':
  114.             fPozycja_reflektora[2]+=0.1;
  115.             glLightfv(GL_LIGHT1, GL_POSITION, fPozycja_reflektora);
  116.             break;
  117.         case '-':
  118.             fPozycja_reflektora[2]-=0.1;
  119.             glLightfv(GL_LIGHT1, GL_POSITION, fPozycja_reflektora);
  120.             break;
  121.  
  122.  
  123.             case 't':
  124.             fKierunek_reflektora[0]-=0.1;
  125.             glLightfv(GL_LIGHT1,GL_SPOT_DIRECTION, fKierunek_reflektora);
  126.             break;
  127.  
  128.          case 'g':
  129.             fKierunek_reflektora[0]+=0.1;
  130.             glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, fKierunek_reflektora);
  131.             break;
  132.  
  133.         case 'f':
  134.             fKierunek_reflektora[1]+=0.1;
  135.             glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, fKierunek_reflektora);
  136.             break;
  137.  
  138.         case 'h':
  139.             fKierunek_reflektora[1]-=0.1;
  140.             glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, fKierunek_reflektora);
  141.             break;
  142.         case 'u':
  143.             fKierunek_reflektora[2]+=0.1;
  144.             glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, fKierunek_reflektora);
  145.             break;
  146.         case 'j':
  147.             fKierunek_reflektora[2]-=0.1;
  148.             glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, fKierunek_reflektora);
  149.             break;
  150.  
  151.              case '1':
  152.             skupRef+=1;
  153.             glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, skupRef);
  154.             break;
  155.         case '2':
  156.             skupRef-=1;
  157.             glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, skupRef);
  158.             break;
  159.  
  160.             case '3':
  161.             katRef+=1;
  162.             glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, katRef);
  163.             break;
  164.         case '4':
  165.             katRef-=1;
  166.             glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, katRef);
  167.             break;
  168.     }
  169.  
  170.     glutPostRedisplay();
  171. }
  172.  
  173. static void idle(void)
  174. {
  175.     glutPostRedisplay();
  176. }
  177.  
  178. void menu(int value)
  179. {
  180.     if(value == 0)
  181.     {
  182.         glDisable(GL_LIGHT1);
  183.  
  184.         glEnable(GL_LIGHT0);
  185.     }
  186.  
  187.     if(value == 1)
  188.     {
  189.        // glDisable(GL_LIGHT0);
  190.         glEnable(GL_LIGHT1);
  191.     }
  192. }
  193.  
  194.  
  195.  
  196. /* Program entry point */
  197.  
  198. int main(int argc, char *argv[])
  199. {
  200.     glutInit(&argc, argv);
  201.     glutInitWindowSize(640,480);
  202.     glutInitWindowPosition(10,10);
  203.     glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
  204.  
  205.     glutCreateWindow("GLUT Shapes");
  206.  
  207.     glutReshapeFunc(resize);
  208.     glutDisplayFunc(display);
  209.     glutKeyboardFunc(key);
  210.     glutIdleFunc(idle);
  211.  
  212.     glClearColor(0,0,0,1);
  213.     glEnable(GL_CULL_FACE);
  214.     glCullFace(GL_BACK);
  215.  
  216.     glEnable(GL_DEPTH_TEST);
  217.     glDepthFunc(GL_LESS);
  218.  
  219.     glEnable(GL_LIGHT0);
  220.     glEnable(GL_NORMALIZE);
  221.     //glEnable(GL_COLOR_MATERIAL);
  222.     glEnable(GL_LIGHTING);
  223.  
  224.     glutCreateMenu(menu);
  225.         glutAddMenuEntry("Ogolne swiatlo",0);
  226.         glutAddMenuEntry("Punktowe",1);
  227.     glutAttachMenu(GLUT_RIGHT_BUTTON);
  228.  
  229. //-------------------swiatlo ogolne-------------------
  230.     glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);
  231.     glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);
  232.     glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
  233.     glLightfv(GL_LIGHT0, GL_POSITION, light_position);
  234.  
  235.     glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, katRef);
  236.     glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, skupRef);
  237.  
  238.     glLightfv(GL_LIGHT1, GL_AMBIENT,  fSlabe_swiatlo);
  239.     glLightfv(GL_LIGHT1, GL_DIFFUSE,  fMocne_swiatlo);
  240.     glLightfv(GL_LIGHT1, GL_SPECULAR, fMocne_swiatlo);
  241.     glLightfv(GL_LIGHT1, GL_POSITION, fPozycja_reflektora);
  242.     glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, fKierunek_reflektora);
  243.  
  244.  
  245.  
  246.  
  247.  
  248. //----------------- ustawienie materialu
  249.     glMaterialfv(GL_FRONT, GL_AMBIENT,   mat_ambient);
  250.     glMaterialfv(GL_FRONT, GL_DIFFUSE,   mat_diffuse);
  251.     glMaterialfv(GL_FRONT, GL_SPECULAR,  mat_specular);
  252.     glMaterialf(GL_FRONT, GL_SHININESS, high_shininess);
  253.  
  254.     glutMainLoop();
  255.  
  256.     return EXIT_SUCCESS;
  257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement