Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void draw_GL (void)
- {
- // Зададим цвет чистого экрана:
- glClearColor(1.0f,1.f,1.f,1.0f); // Значение альфа-канала=1, R=G=B=1
- // Очистим буфер цвета и буфер глубины:
- glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
- // Проверим буфер глубины и проведём его обновление, используя константу 1:
- glClearDepth(1.); glEnable(GL_DEPTH_TEST);
- // Сделаем текущей матрицу проецирования
- glMatrixMode(GL_PROJECTION);
- // Приведём текущую матрицу к единичному виду
- glLoadIdentity();
- // Зададим границы области видимости:*/
- gluPerspective(50,1.2,1,40);
- // 50 - это угол обзора по вертикали
- // 1.2 - коэффициент сжатия по оси х
- // 1 - расстояние от наблюдателя до области видимости
- // 40 - расстояние до дальней плоскости отсечения
- // сделаем текущей матрицу видимости
- glMatrixMode(GL_MODELVIEW);
- // Приведём текущую матрицу к единичному виду
- glLoadIdentity();
- // Переместим начало координат в точку (0,0,-5.5)
- glTranslatef(0,0,-5.5);
- // Определим массив для хранения координат источника света
- GLfloat Lpos[]={3,3,4,1};
- // Поместим источник света в точку с координатами Lpos
- glLightfv ( GL_LIGHT0,GL_POSITION,Lpos );
- // Определим массив для хранения направления источника света
- GLfloat Ld[]={-.5,-.6,-.7};
- // Зададим направление света по вектору Ld
- glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,Ld);
- // включаем источник света с номером 0
- glEnable(GL_LIGHT0);
- glEnable(GL_LIGHTING); // используем текущие значения света
- glEnable(GL_COLOR_MATERIAL); // изображаем освещенные цветные объекты
- glEnable(GL_NORMALIZE); // Автоматическая нормализация всех нормалей
- // Создадим ссылку на трёхмерный объект, используемый при построении изображения
- GLUquadricObj *Obj=gluNewQuadric();
- // Сохраним текущую матрицу
- glPushMatrix();
- //Отрисовка ракеты
- glRotatef( 50,0,0,1); // повернём на угол 50 градусов вокруг оси z
- glRotatef(120,0,1,0); // повернём на угол 120 градусов вокруг оси y
- glTranslatef(0,0,-2); // переместим начало координат в точку (0,1,-2)
- glColor3f(1.,0.5,0); glTranslatef(0,0,2);
- gluCylinder(Obj,0.3,0,1.5,16,1); // рисуем нос
- glColor3f(0.8,0.8,0.8); glTranslatef(0,0,-2.2);
- gluCylinder(Obj,0.2,0.1,0.2,16,1); // рисуем сопло
- glTranslatef(0,0,0.2);
- gluCylinder(Obj,0.3,0.3,2,16,1); // рисуем корпус
- glTranslatef(0.6,0,0); glRotatef(-12,0,1,0);
- gluCylinder(Obj,0.3,0,1.5,16,1);// рисуем 1-ый двигатель
- glRotatef(12,0,1,0); glTranslatef(-1.2,0,0); glRotatef(12,0,1,0);
- gluCylinder(Obj,0.3,0,1.5,16,1);// рисуем 2-ый двигатель
- glRotatef(-12,0,1,0); glTranslatef(0.6,0,0);
- glTranslatef(0,0.6,0); glRotatef(12,1,0,0);
- gluCylinder(Obj,0.3,0,1.5,16,1);// рисуем 3-ый двигатель
- glRotatef(-12,1,0,0); glTranslatef(0.,-1.2,0); glRotatef(-12,1,0,0);
- gluCylinder(Obj,0.3,0,1.5,16,1);// рисуем 4-ый двигатель
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement