Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.71 KB | None | 0 0
  1. void draw_GL (void)
  2. {
  3. // Зададим цвет чистого экрана:
  4. glClearColor(1.0f,1.f,1.f,1.0f); // Значение альфа-канала=1, R=G=B=1
  5. // Очистим буфер цвета и буфер глубины:
  6. glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  7. // Проверим буфер глубины и проведём его обновление, используя константу 1:
  8. glClearDepth(1.); glEnable(GL_DEPTH_TEST);
  9. // Сделаем текущей матрицу проецирования
  10. glMatrixMode(GL_PROJECTION);
  11. // Приведём текущую матрицу к единичному виду
  12. glLoadIdentity();
  13. // Зададим границы области видимости:*/
  14. gluPerspective(50,1.2,1,40);
  15. // 50 - это угол обзора по вертикали
  16. // 1.2 - коэффициент сжатия по оси х
  17. // 1 - расстояние от наблюдателя до области видимости
  18. // 40 - расстояние до дальней плоскости отсечения
  19. // сделаем текущей матрицу видимости
  20. glMatrixMode(GL_MODELVIEW);
  21. // Приведём текущую матрицу к единичному виду
  22. glLoadIdentity();
  23. // Переместим начало координат в точку (0,0,-5.5)
  24. glTranslatef(0,0,-5.5);
  25. // Определим массив для хранения координат источника света
  26. GLfloat Lpos[]={3,3,4,1};
  27. // Поместим источник света в точку с координатами Lpos
  28. glLightfv ( GL_LIGHT0,GL_POSITION,Lpos );
  29. // Определим массив для хранения направления источника света
  30. GLfloat Ld[]={-.5,-.6,-.7};
  31. // Зададим направление света по вектору Ld
  32. glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,Ld);
  33. // включаем источник света с номером 0
  34. glEnable(GL_LIGHT0);
  35. glEnable(GL_LIGHTING); // используем текущие значения света
  36. glEnable(GL_COLOR_MATERIAL); // изображаем освещенные цветные объекты
  37. glEnable(GL_NORMALIZE); // Автоматическая нормализация всех нормалей
  38. // Создадим ссылку на трёхмерный объект, используемый при построении изображения
  39. GLUquadricObj *Obj=gluNewQuadric();
  40. // Сохраним текущую матрицу
  41. glPushMatrix();
  42. //Отрисовка ракеты
  43. glRotatef( 50,0,0,1); // повернём на угол 50 градусов вокруг оси z
  44. glRotatef(120,0,1,0); // повернём на угол 120 градусов вокруг оси y
  45. glTranslatef(0,0,-2); // переместим начало координат в точку (0,1,-2)
  46. glColor3f(1.,0.5,0); glTranslatef(0,0,2);
  47. gluCylinder(Obj,0.3,0,1.5,16,1); // рисуем нос
  48. glColor3f(0.8,0.8,0.8); glTranslatef(0,0,-2.2);
  49. gluCylinder(Obj,0.2,0.1,0.2,16,1); // рисуем сопло
  50. glTranslatef(0,0,0.2);
  51. gluCylinder(Obj,0.3,0.3,2,16,1); // рисуем корпус
  52. glTranslatef(0.6,0,0); glRotatef(-12,0,1,0);
  53. gluCylinder(Obj,0.3,0,1.5,16,1);// рисуем 1-ый двигатель
  54. glRotatef(12,0,1,0); glTranslatef(-1.2,0,0); glRotatef(12,0,1,0);
  55. gluCylinder(Obj,0.3,0,1.5,16,1);// рисуем 2-ый двигатель
  56. glRotatef(-12,0,1,0); glTranslatef(0.6,0,0);
  57. glTranslatef(0,0.6,0); glRotatef(12,1,0,0);
  58. gluCylinder(Obj,0.3,0,1.5,16,1);// рисуем 3-ый двигатель
  59. glRotatef(-12,1,0,0); glTranslatef(0.,-1.2,0); glRotatef(-12,1,0,0);
  60. gluCylinder(Obj,0.3,0,1.5,16,1);// рисуем 4-ый двигатель
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement