Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. #include <GL/glut.h>
  2. void draw();
  3.  
  4. void init()
  5. {
  6.     glClearColor(1, 1, 1, 0);
  7.     glEnable(GL_LIGHTING);
  8. }
  9.  
  10. void reshape(int width, int height)
  11.  
  12. {
  13.     glViewport(0, 0, width, height);
  14.     glMatrixMode(GL_PROJECTION);
  15.     glLoadIdentity();
  16.     glOrtho(-800, 800, -800, 800, -800, 800);
  17.     glMatrixMode(GL_MODELVIEW);
  18.     glLoadIdentity();
  19. }
  20.  
  21. int main(int argc, char **argv)
  22. {
  23.     glutInit(&argc, argv);
  24.     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  25.     glEnable(GL_DEPTH_TEST);
  26.     glutInitWindowSize(1000, 1000);
  27.     glutInitWindowPosition(140, 0);
  28.     glutCreateWindow("OGL");
  29.     init();
  30.     glutDisplayFunc(draw);
  31.     glutReshapeFunc(reshape);
  32.     glutMainLoop();
  33. }
  34.  
  35. void draw()
  36. {
  37.     glClearColor(0, 0, 0, 0);
  38.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  39.     gluLookAt(-300, 100, 800, 0, 0, 0, 0, 1, 0); //смотрим на шарик
  40.  
  41.     GLfloat pos[4] = { -250, 200, 200, 1 }; // если последняя координата равна 0, то свет удаленный
  42.     GLfloat mat[4] = { 0, 1, 0, 1 }; // 1-й свет - зеленый
  43.     GLfloat amb[4] = { 0.5, 0.2, 0.7, 1 };
  44.     GLfloat kek = 0.9;
  45.     glEnable(GL_LIGHT0);
  46.     glLightfv(GL_LIGHT0, GL_POSITION, pos); // позиция
  47.     glLightfv(GL_LIGHT0, GL_DIFFUSE, mat); // GL_DIFFUSE - цвет рассеянного излучения источника света
  48.     glLightfv(GL_LIGHT0, GL_AMBIENT, amb); // GL_AMBIENT - цвет фонового излучения(вокруг рассеянного света на шарике)
  49.     //glLightfv(GL_LIGHT0, GL_CONSTANT_ATTENUATION, &kek);
  50.     GLfloat dir[] = { 0, 0, -1 };
  51.     GLfloat pose[4] = { 50, 200, 400, 1 };
  52.     GLfloat mate[4] = { 1, 0, 0, 1 }; // 2-й свет - красный
  53.  
  54.     glEnable(GL_LIGHT1);
  55.     glLightfv(GL_LIGHT1, GL_DIFFUSE, mate); // цвет рассеянного излучения
  56.     glLightfv(GL_LIGHT1, GL_POSITION, pose);
  57.     glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 90);//угол между осью и стороной конуса(он же половина угла при вершине)
  58.     glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, dir); // направление прожектора
  59.  
  60.     glutSolidSphere(300, 50, 50);
  61.  
  62.     glDisable(GL_LIGHT0);
  63.     glDisable(GL_LIGHT1);
  64.  
  65.     glutSwapBuffers();
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement