^Back To Top
foto1 foto2 foto3 foto4 foto5 foto6 foto7 foto8 foto9 foto10 foto11 foto12 foto13 foto14 foto15 foto16 foto17 foto18 foto19 foto20 foto19

 

OpenGL в C++ для Ch--

 

 

Автопортреты дремучего 3D чайника

 

..... Графическая библиотека OpenGL позволяет рисовать и направлять свет на только на шары. Существуют специальные операторы для вывода на экран конусов, цилиндров и даже додекаэдров и икосаэдров! Кроме того существует специальный оператор, который рисует 3D чайники!

..... Точно так же, как и при создании проекта «sphere» создаём проект «teapot» - «чайник» и после несложных манипуляций с ОС Windows и библиотекой GLUT создаём файл исходного кода teapot.cpp, в котором все стираем и помещаем туда программу «teapot», содержащую шапку и три функции.

 

Программа «teapot» - «чайник»


 #include "stdafx.h"
 #include <glut.h>
    

 void Light()
    {
      glEnable(GL_LIGHT0);
      glEnable(GL_LIGHTING);
      glEnable(GL_DEPTH_TEST);
     GLfloat col[]={1.0, 0.0, 0.0, 1.0};
     glLightfv(GL_LIGHT0, GL_AMBIENT, col);
     GLfloat pos[]={1.0, 0.0, 1.0, 0.0};
     glLightfv(GL_LIGHT0, GL_POSITION, pos);
    }
 
void Draw()
    {
      glClear(GL_COLOR_BUFFER_BIT |                                                                GL_DEPTH_BUFFER_BIT); 
     glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
     glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
     glutSolidTeapot(0.55);
      glFlush();
    }

void main( int argc, char ** argv)
    {
      glutInit(&argc, argv);
      glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH);
     glutInitWindowPosition(100, 100);
     glutInitWindowSize(400, 400);
     glutCreateWindow("Автопортрет в розовом");
     glClearColor(0.0, 0.0, 0.0, 0.0);
     Light();
     glutDisplayFunc(Draw);
      glutMainLoop();
   }

..... Программа «teapot» мало отличается от «sphere». Если довериться операторам-невидимкам и оставить зелёную зону функции Light() пустой, то в этом случае чайник будет выглядеть блёкло. По этой причине он показан в направленном розовом фоновом свете. 

..... В функции Draw() заменён только один оператор glutSolidTeapot() для чайника 0.55-го размера. 

..... В главной функции программы main() изменено только название окна.

..... Записываем эту программу в файл teapot.cpp, нажимаем F5 и получаем Автопортрет Дремучего чайника в розовом:

..... Заменяем соответствующим образом четыре оператора в зелёной зоне функции освещения (проявляем сообразительность!) и получаем голубой зеркальный чайник, освещённый белым светом: