Народный учебник по OpenGL


Урок 11. Эффект "флага" на OpenGL - часть 3


 

Окончательное значение points[x][y][2] - это наше значение синуса. Функция sin() принимает параметр в радианах. Мы берем наши градусы, которые получились умножением float_x (x/5.0f) на 40.0f, и, чтобы конвертировать их в радианы делением, мы берем градусы, делим на 360.0f, умножаем на число пи (или на аппроксимацию) и на 2.0f.

 

Я заново перепишу функцию DrawGLScene, так что удалите ее текст и замените его текстом, приведенным ниже.

 

int DrawGLScene(GLvoid)                          // рисуем нашу сцену

{

      int x, y;                                  // переменные циклов

      // для разбиения флага на маленькие квадраты

      float float_x, float_y, float_xb, float_yb;

 

Различные переменные используются для контроля в циклах. Посмотрите на код ниже – большинство из них служит лишь для контролирования циклов и хранения временных значений.

 

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // очистить экран и буфер глубины

glLoadIdentity();                                   // сброс текущей матрицы

 

glTranslatef(0.0f,0.0f,-12.0f);                     // перенести 17 единиц в глубь экрана

 

glRotatef(xrot,1.0f,0.0f,0.0f);                     // вращение по оси X

glRotatef(yrot,0.0f,1.0f,0.0f);                     // вращение по оси Y 

glRotatef(zrot,0.0f,0.0f,1.0f);                     // вращение по оси Z

 

glBindTexture(GL_TEXTURE_2D, texture[0]);           // выбрать нашу текстуру

 

Вы могли видеть это все раньше. Все тут так же, как в уроке №6, кроме того, что я просто отвожу сцену от камеры чуть дальше.

 

glBegin(GL_QUADS);              // начинаем рисовать квадраты

      for( x = 0; x < 44; x++ ) // пройдемся по плоскости X 0-44 (45 точек)

      {

            for( y = 0; y < 44; y++ ) // пройдемся по плоскости Y 0-44 (45 точек)

            {

 

Просто запускаем цикл рисования наших полигонов. Я здесь использую целые числа, чтобы избежать использования функции int(), которой я пользовался ранее для получения индекса ссылки массива как целое значение.




Начало  Назад  Вперед



Книжный магазин